UDP协议(数据报协议:SOCK_DGRAM)
udp是无链接的,先启动哪一端都不会报错
udp协议的特点:
传输数据不可靠,发送完后没有确认就删除
传送内容可为空
对于查寻速度快
支持的是一对多的模式,采用的是链式结构来来记录每一个达到的数据包每个报头都有源地址和端口信息。对于接收端来说就容易区分了
udp的recvfrom是阻塞的,一个recvfrom(x)必须对唯一的sendto(y),若y>x,说明数据丢失。这就意味着udp不会粘包。
ntp(时间服务器)
DNS :将域名解析成ip地址
udp 服务端 #创建一个服务器套接字
server = socket() #绑定服务器套接字
server.bind() inf_loop: #服务器无限循环
client = server.recvfrom() #对话接收
server.close()
udp 客户端
client = socket() #创建客户套接字
comm_loop: #通讯循环
client.sendto() #对话发送
client.close()
import socket
client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
while True:
msg = input('>>>:')
client.sendto(msg.encode('utf-8'),('127.0.0.1',8082))
print(client.recv(1024).decode('utf-8'))
client.close()
import socket
server = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
server.bind(('127.0.0.1',8082))
while True:
conn,addr = server.recvfrom(1024)
server.sendto(conn.upper(),addr)
server.close()
recvfrom: 接收消息,收到的是一个元组(消息,发送的地址)
sendto: 发送消息,还要指定发送给谁