我需要通过以太网从169.254.xx.xx向192.168.xx.xx发送UDP数据包。第二个地址是FPGA的地址,其MAC地址是已知的。我使用wireshark来监控数据包,但是当我有一个未绑定的套接字时,我打电话给sock.sendto()
它通过WLAN发送。当我将套接字绑定到WLAN接口时,它会发送,但是当我将套接字绑定到以太网接口时,我在尝试发送时出现此错误:
OSError: [WinError 10051] A socket operation was attempted to an unreachable network
当绑定到以太网接口,并且我发送到169.254.xx.xx子网中的未使用地址时,它会发送ARP,但当目标位于192.168.xx.xx子网中时,不会发送任何内容。
以下是代码:
import socket
import time
address = '192.168.1.239'
port = 1235
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(('169.254.190.73', 0))
sock.sendto('100'.encode('utf-8'), (bytes(address, 'UTF-8'), port))
time.sleep(0.005)
sock.close()
'''
'''
答案 0 :(得分:1)
由于169.254.xx.xx和192.168.xx.xx代表不同的网络,因此需要路由两者之间的流量。但是,169.254.0.0/16(autoconf)通常不会被路由。
如果两个节点实际上都位于同一第2层网段,则只需(手动)更改autoconf客户端的IP地址。