我正在尝试与FPGA板通信,其中实现了基本的UDP协议。我使用的是Windows 7 PC,python 2.7.6 32位。
我的电脑已连接到局域网网络。自动接收此IP(来自ipconfig):IP 192.168.2.1,子网掩码:255.255.255.0
我的主板通过开关连接到我的电脑。电路板的IP是固定的(硬件代码) - 192.168.4.10。
如果我理解当前 - 我的电脑和我的电路板在不同的子网上,因为4个正确的ip子编号中有2个是不同的。
当我发送UDP数据包时 - 卡没有收到它。当我手动强制我的计算机是相同的IP(192.168.2.1)但255.255.0.0子网掩码,它确实接收。
我用于发送的python代码是这样的:import socket
UDP_IP = "192.168.4.10"
RECEIVE_PORT = 5005
SEND_PORT = 5005
MESSAGE = "Hello, World!"
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock .bind(('', SEND_PORT))
sock.sendto(MESSAGE, (UDP_IP, RECEIVE_PORT))
可能是什么原因? 有什么办法可以在代码中解决这个问题吗? 有什么办法可以在代码中更改子网掩码吗? 我应该阅读什么来理解我的问题?
答案 0 :(得分:3)
实际上你应该使用" IP地址别名"在PC上的单个以太网端口上同时拥有192.168.2.1/255.255.255.0
和192.168.4.1/255.255.255.0
:
从192.168.4.10
发送UDP数据报到192.168.2.1/255.255.255.0
时发生了什么:
192.168.4.0
vs 192.168.2.0
192.168.4.0
网络一无所知,不得不丢弃数据报从192.168.4.10
发送UDP数据报到192.168.2.1/255.255.0.0
时发生了什么:
192.168.0.0
192.168.4.10
的所有者192.168.4.10
。请致电d8:cb:8a:f0:0b:aa
" d8:cb:8a:f0:0b:aa