Python:如何将recvfrom()函数接收到的地址转换成字符串?

2024-05-17 14:22:52 发布

您现在位置:Python中文网/ 问答频道 /正文

摘要

我正在向python udp监听器添加一个特性,该监听器向它接收到的设备发送回一个确认。在我的情况下,目前该设备是本地主机,但在未来将是一个MT4000遥测设备。

问题

我正在使用recvfrom()函数从发送数据的设备接收数据和源地址。返回值是一对(string,address),其中string是表示接收到的数据的字符串,address是发送数据的套接字的地址。这个问题我们集中在地址上。地址正在返回

('127.0.0.1', 57121)

我理解这意味着源I.p是127.0.0.1ie localhost,57121表示数据已通过的端口。我的目标是分割这些数据以便发回确认。

我的解决方案

我收到数据的代码是: (s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)) data, addr = s.recvfrom(1024)

到目前为止,我已经尝试了这种分割数据的方法:

sourceIp = addr[3:-9]

我的印象是这应该把绳子分开:

sourceIp = 127.0.0.1

但是它只输出这个:()

我现在的想法是,这实际上不是一个字符串,所以这种拆分的方法不起作用。有没有另一种分裂的方式,或转换的方法?谢谢。


Tags: 数据方法字符串stringaddress地址情况特性
1条回答
网友
1楼 · 发布于 2024-05-17 14:22:52

('127.0.0.1', 57121)是一个具有两个项的tuple不可变容器。

要获取ip/端口,请执行以下操作:

data, addr = s.recvfrom(1024)
ip = addr[0]
port = addr[1]

或者您可以像使用data, addr = ...那样将其解压缩:

data, addr = s.recvfrom(1024)
ip, port = addr

或者,甚至是短路:

data, (ip, port) = s.recvfrom(1024)

相关问题 更多 >