【发布时间】:2018-02-16 07:07:20
【问题描述】:
我需要通过以太网从 169.254.xx.xx 发送一个 UDP 数据包到 192.168.xx.xx。第二个地址是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()
'''
'''
【问题讨论】:
-
'169.254.190.73' != '192.168.1.239'适配器说No active connection! -
如果不知道
metrics绑定到套接字"0.0.0.0"地址! -
@dsgdfg 绑定到“0.0.0.0”似乎不起作用
-
169.x.x.x 和 192.y.y.y 是不同的网络,需要路由。此外,169.x.x.x 是未配置网卡的自动 IP(无 DHCP,无手动配置),您应该查看您电脑的网络配置。
-
亲爱的朋友,低级通信从未在处理器上使用
IP之类的(需要IPIPv4或IPv6连接)。低级(硬件级)的东西需要RAW连接,所以只需要使用MAC。其他东西(ipv4,ipv6)有很多安全漏洞。您为never used data浪费了处理器时钟,却从未达到1us or 2us延迟!
标签: python sockets networking udp ethernet