具有链接本地地址的Python UDP通信(以太网端口到以太网端口)

具有链接本地地址的Python UDP通信(以太网端口到以太网端口),python,sockets,udp,adapter,link-local,Python,Sockets,Udp,Adapter,Link Local,我需要python中套接字的帮助。设备(D)通过以太网电缆直接连接到插入Raspberry Pi的USB到eInternet适配器(eth1)ifconfig并运行sudo tcpdump-i eth1显示D正在IP地址169.254.129.33下通信。当我在Python中运行以下代码时,我没有收到来自D的回复,尽管发送的消息据说会触发响应 import socket HOST = socket.gethostbyname(socket.gethostname()) PORT = 30444

我需要python中套接字的帮助。设备(D)通过以太网电缆直接连接到插入Raspberry Pi的USB到eInternet适配器(eth1)
ifconfig
并运行
sudo tcpdump-i eth1
显示D正在IP地址169.254.129.33下通信。当我在Python中运行以下代码时,我没有收到来自D的回复,尽管发送的消息据说会触发响应

import socket

HOST = socket.gethostbyname(socket.gethostname())
PORT = 30444
D_IP = '169.254.129.33'

msg = 'Calling all IRC devices'

with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s:
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    s.bind((HOST, PORT))
    s.sendto(msg.encode(), (D_IP, PORT))
    data, address = s.recvfrom(PORT)
    s.close()

print(address, ' replied: ', data.decode())
看起来Python要么没有通过适配器向D发送
msg
,要么D的IP地址不是我想的那个

如何让python专门使用USB到以太网适配器进行UDP通信? 当连接到Pi而不是路由器时,如何获得D的正确IP地址


附言:希望格式没问题,我的英语也不错。

如果你在同一台机器上执行
ping 169.254.129.33
,ping是否报告收到回复?@JeremyFriesner ping报告0%的数据包丢失,
sudo tcpdump-i eth1
没有显示该端口上的任何内容……也许
169.254.129.33
是ping运行的机器的IP地址,而不是远程机器?@JeremyFriesner但根据维基百科的链接本地地址,它至少应该是链接本地地址。此外,wireshark在将该地址连接到适配器时检测来自该地址的传入请求。。。与此同时,我尝试添加SO_BINDTODEVICE(如这里所问[),但也不起作用。Pi在eth1上有链接本地地址吗?这是程序需要绑定的地址,但几乎肯定不是从socket.gethostbyname(socket.gethostname())得到的结果。更简单的是,根本不要将
绑定到地址,只需执行
绑定(“,端口”)
。如果您从同一台机器上执行
ping 169.254.129.33
,ping是否会报告收到响应?@JeremyFriesner ping报告0%的数据包丢失,
sudo tcpdump-i eth1
不会显示该端口上有任何输出…可能
169.254.129.33
是ping运行的机器的IP地址,ra而不是远程机器?@JeremyFriesner但根据维基百科的链接本地地址,它至少应该是链接本地地址。wireshark在连接到适配器时检测来自该地址的传入请求……同时我尝试添加SO_BINDTODEVICE(如此处所问[)但这也不起作用。Pi在eth1上有链接本地地址吗?这是程序需要绑定到的地址,但几乎肯定不是从
socket.gethostbyname(socket.gethostname())
得到的结果。更简单的是,不要将
bind
绑定到地址,只需执行
bind(“),端口)