python socket
socket 函数
socket.socket(family,type,protocol)
- family AF_UNIX 或AF_INET
- type TCP SOCK_STREAM UDP SOCK_DGRAM
- protocol: 一般不填
Socket对象方法
- 服务端
- s.bind((host,port)) 绑定地址
- s.listen() TCP监听 操作系统可以挂起的最大连接数
- s.accept() 被动接受tcp客户端连接
- 客户端
- s.connect((hostname,port)) 主动初始化TCP服务连接
- s.connect_ex() connect(0函数的扩展版 出错返回错误码
公共用途
- TCP
- s.recv(bufsize,flag) 接受TCP数据 返回字符串 bufsize 指定要接受的最大数据 flag 提供有发热消息的其他信息
通常忽略 - s.send(string) 发送TCP数据 返回字节数
- s.sendall(string) 返回前尝试发送所有的数据 成功返回None 失败抛出异常
- UDP
- s.recvfrom() 接受udp数据 返回(data,address) address为(ip,port)
- s.sendto() 发送udp
关闭
s.close()地址
- s.getpeername() 获取远程地址
- s.getsockname() 获取自己的地址
- 选项
- s.setsockopt(level,optname,value)
- s.getsockopt(leve,optname[.buflen])
- s.settimeout(timeout) 设置套接字超时时间
- s.gettimeout() 获取超时时间
阻塞 非阻塞
s.setblocking(flag) flag=0 非阻塞式文件
- s.fileno() 返回套接字的fd
- s.makefile() 创建一个与该套接字相关的文件