Socket的介绍:
socket(套接字),是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间进程进行双向通信的端点,你可以理解为双方通信的一种约定,在Python用到的就是socket模块,用socket()函数提供的一些方法,可以实现基于套接字的网络通信。
socket()模块函数
要创建套接字,就必须使用socket.socket()函数,它一般的语法如下:
socket(socket_family,socket_type,protocol=0)
其中socket_family是AF_UNIX(只能够用于单一的Unix系统进程间通信)或者AF_INET(默认是IPv4),socket_type是SOCK_STREAM(TCP流式报文)或者是SOCK_DGRAM(UDP数据报式报文),protocol通常省略,默认为0。
所以,为了创建TCP/IP套接字,可以使用下面的方式调用socket.socket()。
tcpSocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
同样,为了创建UDP/IP套接字,需要执行下面的语句。
udpSocket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
套接字对象(内置方法)
下面的表格只列出一些经常用到的属性和方法
属性 | 名称 |
---|---|
服务器端套接字方法 | |
s.bind | 将地址(主机名和端口号对)元组的形式绑定到套接字上 |
s.listen() | 设置 并启动TCP监听器,挂起的最大连接数量,至少为1,最大为5。 |
s.accept() | 被动接受TCP客户端连接,一直等待到连接到达(阻塞) |
客户端套接字方法 | |
s.connect() | 主动发起TCP服务器连接 |
s.connect_ex() | connect()函数的扩展版本,出错时返回出错码,而不是抛出异常 |
普通的套接字方法 | |
s.recv() | 接受TCP消息 |
s.recv_into() | 接受TCP消息到指定的缓冲区 |
s.send() | 发送TCP消息 |
s.sendall() | 完整的发送TCP消息 |
s.recvfrom() | 接受UDP消息 |
s.recvfrom_into() | 接受UDP消息到指定的缓冲区 |
s.sendto() | 发送UDP消息 |
s.shutdown() | 关闭连接 |
s.close() | 关闭套接字 |
面向阻塞的套接字方法 | |
s.fileno() | 套接字的文件描述符 |
s.makefile() | 创建套接字关联的文件对象 |