【问题标题】:I need to send a UDP packet from the ethernet adapter to an FPGA with a known MAC address and ipv4 address我需要将 UDP 数据包从以太网适配器发送到具有已知 MAC 地址和 ipv4 地址的 FPGA
【发布时间】: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 之类的(需要IP IPv4IPv6 连接)。低级(硬件级)的东西需要RAW 连接,所以只需要使用MAC。其他东西(ipv4,ipv6)有很多安全漏洞。您为never used data 浪费了处理器时钟,却从未达到1us or 2us 延迟!

标签: python sockets networking udp ethernet


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2014-04-14
    • 2012-09-29
    • 2012-07-06
    • 2020-08-25
    • 2012-04-10
    • 2020-03-11
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    相关资源
    最近更新 更多