UDP协议

TCP半连接池的原理:

import socket
server = socket.socket()
server.bind("127.0.0.1",3333)
server.listen(5)

这里的listen(5)参数5就是最大允许等待连接的ip与端口,会形成一个ip连接请求等待池,池子大小由参数决定,超过范围的客户端将会被拒绝。客户端连接请求超时抛出异常。

UDP发送数据的工作原理

import socket
client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#不需要创建链接
#直接发送数据
#不会因客户端的异常关闭,服务端出现错误
while True:
    msg = input(">>>:")
    if not msg:continue
    client.sendto(msg.encode("utf-8"),("127.0.0.1",3232))
    data,addr = client.recvfrom(1024)
    print(data.decode("utf-8"))

客户端

import socket
#默认使用TCP协议,当前UDP协议
server =socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
server.bind(("127.0.0.1",3232))
#不用监听
#创建链接

while True:
    #接受数据
    data,addr = server.recvfrom(1024)
    res = data.upper()
    server.sendto(res,addr)#因为没有创建链接,所以发送需要设置发送地址

服务端

3. UDP的模板代码 *****
与TCP代码的区别
不需要监听 不需要接收
type参数为 SOCK_DGRAM
UDP 可以同时处理多个客户端 是因为CPU处理速度快 给人感觉像是同时处理

UDP协议不会粘包

缓冲区大小要足够数据包的大小,建议不要超过512

UDP的使用场景:视频电话,语音电话,直播,DNS域名解析器

原文地址:https://www.cnblogs.com/msj513/p/9917140.html