用户数据报协议(User Datagram Protocol) 是一个 无连接、非可靠 的传输层协议,和 TCP 并列,是互联网中最常见的协议之一。
UDP 程序不存在连接,只需要绑定自身地址并收发数据即可。下面是一个示例,它创建了两个 socket,从一个向另一个发送数据。
import socket
# 创建 UDP socket
sock1 = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock2 = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定自身地址
sock1.bind(('0.0.0.0', 4000))
sock2.bind(('0.0.0.0', 4001))
# sock1 向 localhost:4000 即 sock2 发送数据
sock1.sendto('hello\n'.encode(), ('localhost', 4001))
# sock2 接收数据
data, addr = sock2.recvfrom(1024)
print(f'从 {addr} 收到 {data.decode()}')
AF_INET
表示使用 IPv4 地址,
SOCK_DGRAM
表示使用 UDP
地址参数是一个元组,第一个元素可以是域名、主机名或 IP 地址,第二个元素是端口