摘要
我正在向python udp监听器添加一个功能,该功能向其收到的设备发回确认 . 在我的情况下,目前该设备是localhost,但将来将是一个MT4000遥测设备 .
问题
我正在使用recvfrom()函数从发送数据的设备接收数据和源地址 . 返回值是一对(字符串,地址),其中string是表示接收数据的字符串,address是发送数据的套接字的地址 . 这个问题我们关注的地址 . 地址正在返回
('127.0.0.1', 57121)
我理解这意味着源I.P是 127.0.0.1 即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
但它确实只输出这个: ()
我现在的想法是,这实际上并不是一个字符串,因此拆分方法不起作用 . 还有另一种分裂方式或转换方法吗?谢谢 .
1 回答
('127.0.0.1', 57121)
是一个tuple,包含两个项目的不可变容器 .要获取ip / port,请执行以下操作:
或者您可以像使用
data, addr = ...
一样解压缩它:或者,甚至是短路方法: