现在的位置: 主页 > 公司荣誉 > 文章正文
Python:网络编程
作者:吴桥县齐源纤维素有限公司 来源:www.qy-xws.com 发布时间:2017-09-04 13:25:55
Python:网络编程

套接字是一种“通信端点”概念的计算机网络数据结构。用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过”套接字”向网络发出请求或者应答网络请求。他们的底层结构都是基于文件系统来支持的。

面向连接与无连接

面向连接的协议是TCP协议(传输控制协议,TCP协议是面向连接、保证高可靠性(数据无丢失、数据无失序、数据无错误、数据无重复到达)传输层协议),这个协议通信之前需要三次握手。要创建TCP套接字就得在创建的时候指定套接字的类型为SOCK_STREAM,这个名字表达了他作为流套接字的特点。
与之相反的连接就是无连接的套接字,这时,数据到达的顺序,可靠性以及不重复性就无法保证了,适用于视频这些要求速度的场景。实现这种连接的协议就是UDP(用户数据报协议),要创建UDP套接字就必须在创建的时候指定套接字类型为SOCK_DGRAM。

网络编程 socket模块

首先使用socket.socket()函数来创建套接字
socket.socket(socket_family,socket_type,protocol=0)
参数一:地址簇
  socket.AF_INET IPv4(默认)
  socket.AF_INET6 IPv6
  socket.AF_UNIX 只能够用于单一的Unix系统进程间通信

参数二:类型

  socket.SOCK_STREAM  流式socket , for TCP (默认)
  socket.SOCK_DGRAM   数据报式socket , for UDP

  socket.SOCK_RAW 原始套接字,普通的套接字无法处理ICMP、IGMP等网络报文,而SOCK_RAW可以;其次,SOCK_RAW也可以处理特殊的IPv4报文;此外,利用原始套接字,可以通过IP_HDRINCL套接字选项由用户构造IP头。
  socket.SOCK_RDM 是一种可靠的UDP形式,即保证交付数据报但不保证顺序。SOCK_RAM用来提供对原始协议的低级访问,在需要执行某些特殊操作时使用,如发送ICMP报文。SOCK_RAM通常仅限于高级用户或管理员运行的程序使用。
  socket.SOCK_SEQPACKET 可靠的连续数据包服务
  
参数三  
protocol一般不填,默认为0,特定的地址家族相关的协议,如果是 0 ,则系统就会根据地址格式和套接类别,自动选择一个合适的协议

套接字对象的内建方法

s=socket.socket()

服务器端套接字函数

s.bind(address)
绑定地址元组(主机名,端口号)到套接字

s.listen(backlog))
开始tcp监听

s.accept()
被动接受tcp客户端连接,(阻塞式)等待连接的到来,返回客户端套接字对象和客户端地址

客户端套接字函数

s.connect(address)
主动初始化TCP服务器连接

s.connect_ex( address)
connect()函数的扩展版本,出错时返回出错码,而不是抛出异常

公共用途的套接字函数

s.recv(buffersize, flags=None)
接受tcp数据

s.send(data, flags=None)
发生tcp数据

s.sendall(data, flags=None)
完整发生tcp数据

s.recvfrom( buffersize, flags=None)
接受udp数据

s.sendto( data, flags=None, *args, **kwargs)
发生udp数据

s.getpeername()
连接到当前套接字的远端地址

s.getsockname()
当前套接字的地址

s.getsockopt(level, option, buffersize=None)
返回指定套接字的参数

s.setsockopt()
设置指定套接字的参数

s.close()
关闭套接字

s.ioctl(cmd, option)
s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)
限定一个系统接口

面向模块的套接字函数

s.setblocking( flag)
设置套接字的阻塞与非阻塞模式

s.settimeout()
设置阻塞套接字操作的超时时间

s.gettimeout(timeout)
得到阻塞套接字的超时时间

面向文件的套接字函数

s.fileno()
套接字的文件描述符

s.makefile()
创建一个与该套接字的关联的文件对象

创建TCP客户端与服务器通信

client.py

import socket con=socket.socket(socket.AF_INET,socket.SOCK_STREAM) con.connect(('192.168.88.132',8888)) while True: try: user=raw_input("\033>>>\033:") con.sendall(user) except Exception: break print str(con.recv(1024)) con.close()

server.py

#coding:utf-8 import socket server=socket.socket(socket.AF_INET,socket.SOCK_STREAM) server.bind(('0.0.0.0',8888)) server.listen(5) while True: print "listenning...." con,add=server.accept() while True: try: print con.recv(1024) message=raw_input("\033>>>\033:") con.sendall(message) except Exception: break con.close()

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:武汉网站制作 http://wuhan.666rj.com


  • 上一篇:武汉网站建设公司哪家好?首选肥猫科技027-82823488
  • 下一篇:最后一页
  • 
    COPYRIGHT © 2015 吴桥县齐源纤维素有限公司 ALL RIGHTS RESERVED.
    本站所有原创信息,未经许可请勿任意转载或复制使用 网站地图 技术支持:肥猫科技
    精彩专题:网站建设
    购买本站友情链接、项目合作请联系客服QQ:2500-38-100