UDP:
创建UDP套接字
导入套接字
UDP _ socket=socket.socket (socket.af _ inet,socket.SOCK_DGRAM ) )。
关闭UDP套接字
udp_socket.close (
使用UDP套接字发送数据
UDP _ socket.send to (字节类型数据,目标套接字地址) ) )。
使用UDP套接字接收数据-阻止传入数据
bytes类型的数据,发件人套接字地址=udpp_socket.recvfrom (此次接收的最大长度) )。) ) ) )。
使用固定端口-bind
udp_socket.bind (本地套接字地址) ) ) ) )。
TCP:
1、TCP特点
面向连接-在通信之前必须建立连接
可靠的传输
响应机制
重发超时
序号
检查机制
流量控制
2、TCP客户端进程
connect函数创建与服务器的连接
参数服务器套接字(IP,port ) ) ) )。
recv函数接收TCP数据-等待块
参数表示此次接收的最大长度
返回值的两个作用
通常,接收的是对方发送给自己的数据bytes类型
如果收到的数据是b ' ',则表示对方已断开连接
send函数发送TCP数据
参数指示要发送的数据的bytes类型
返回值成功发送的字节数-----了解
3 .服务器进程
列表函数
设为被动套接字-接受来自客户端的连接
接受函数
与客户端相关联的套接字,客户端地址=accept ()块等待-从等待的服务器中检索一个客户服务
4. 2MSL状态
TCP规定,主动抢占方需要等待30s-2min,确认对方一定会收到最后的ACK
---TCP连接使用的端口在30s-2min内无法理解重新绑定
设置解决方案set socket option套接字选项
sock.setsockopt (
出现地址使用问题的三个原因
1. pycharm同时启动了多个程序绑定同一端口
2. pycharm后台进程还在继续占用上一个端口
3. TCP 2MSL时间
---设置套接字选项,终端运行
忽略2MSL的时间规定,TCP服务器可以不等待2MLS的时间就理解重新绑定前的端口
server _ socket.setsockopt (socket.sol _ socket,socket.SO_REUSEADDR,1 ) )。