套接字介绍
- 1.套接字:实现网络编程进行数据传输的一种技术手段
- 2.Python:实现套接字编程:import socket
- 3.套接字分类
- 流式套接字(SOCK STREAM):以字节流方式传输数据,实现tcp网络传输方案。(面向连接-tcp协议-可靠的-流式套接字)
- 数据报套接字(SOCK DGRAM):以数据报形式传输数据,实现udp网络传输方案。(无连接-udp协议-不可靠-数据报套接字)
TCP套接字编程
服务端流程
常用函数
1.创建套接字
socket.socket([family[, type[, proto]]])
- family: 套接字家族可以是 AF_UNIX 或者 AF_INET
- type: 套接字类型可以根据是面向连接的还是非连接分为
SOCK_STREAM或SOCK_DGRAM - protocol: 一般不填默认为0.
2.绑定地址
- 本地地址:localhost','127.0.0.1'
- 网络地址:172.40.91.185 ipconfig获得
- 自动获取地址:'0.0.0.0
sockfd.bind(addr)
- 功能:绑定本机网络地址
- 参数:二元元组(ip,port)('0.0.0.0',8888) IP:字符串 端口:整形
3.设置监听
套接字无法连接客户端,监听套接字可以同时连接很多客户端,但连接过程需要一个一个的连接
sockfd.listen(n)
- 功能:将套接字设置为监听套接字,确定监听队列大小
- 参数:监听队列大小
4.等待处理客户端连接请求
connfd,addr=sockfd.accept() 功能:阻塞等待处理客户端请求
返回值:
- connfd 客户端连接套接字
- addr 连接的客户端地址
5.消息收发
connfd是上面的函数的返回值
data =connfd.recv(buffersize)
- 功能:接受客户端消息
- 参数:每次最多接收消息的大小
- 返回值:接收到的内容
n=connfd.send(data)
- 功能:发送消息
- 参数:要发送的内容 bytes格式(在python3中,所有套接字的收发,必须bytes格式)
- 返回值:发送的字节数
6.关闭套接字
sockfd.close()
- 功能:关闭套接字