我需要从以太网适配器向具有已知MAC地址和ipv4地址的FPGA发送UDP数据包

时间:2017-09-07 13:49:35

标签: python sockets networking udp ethernet

我需要通过以太网从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()
''' 
   '''

1 个答案:

答案 0 :(得分:1)

由于169.254.xx.xx和192.168.xx.xx代表不同的网络,因此需要路由两者之间的流量。但是,169.254.0.0/16(autoconf)通常不会被路由。

如果两个节点实际上都位于同一第2层网段,则只需(手动)更改autoconf客户端的IP地址。