udp 接受数据
以下是发送消息和接受消息的过程:
from socket import * #导入socket包的所有对象
s = socket(AF_INET,SOCK_DGRAM)#创建一个socket对象
addr = ('192.168.1.101',8083)
data = input("请输入要发送的内容:")
s.sendto(data.encode("gb2312"),addr) #发送数据
redata = s.recvfrom(2048)#所能接受的最大字节数
print(redata)# 元祖两个元素。第一个为字节流 第二个为发送方的ip和端口号
print(redata[0].decode("gb2312"))#将元祖的第一个元素字节流转换为字符串
s.close()
运行结果如下:
请输入要发送的内容:你好
(b’\xc4\xe3\xd2\xb2\xba\xc3\r\n’, (‘192.168.1.101’, 8080))
你也好
redata = s.recvfrom(2048) 2048表示所能接受的最大字节数
接收到的第一个消息为一个元祖,包含两个元素,第一个为数据流,以b开头;第二个为发送方的地址元祖,包括(发送方ip地址,端口号)
为了得到消息字符串,需要对字节流进行解码,使用print(redata[0].decode(“gb2312”))将元祖的第一个元素字节流转换为字符串
在一般的接受消息过程中,需要绑定一个特定的端口进行通信
端口绑定代码如下:
from socket import * #导入socket包的所有对象
s = socket(AF_INET,SOCK_DGRAM)#创建一个socket对象
s.bind(('192.168.1.101',8788))
redata = s.recvfrom(1024)
print(redata[0].decode('gb2312'))
使用s.bind((‘192.168.1.101’,8788))绑定8788端口用于接受消息。