当我的机器使用 DHCP 时,没有收到从不同子网发送的响应

当我的机器使用 DHCP 时,没有收到从不同子网发送的响应

我正在构建一个实用程序,用于与某些硬件进行通信,这些硬件的默认 IP 地址为 10.0.0.1,子网掩码为 255.255.255.0。硬件使用相同的 IP 和端口(而不是接收端口)回复 UDP 消息。我设置了一个套接字来发送广播 UDP 消息,然后监听来自任何 IP 的回复。

我遇到的问题是,当我的 Windows 7 计算机使用通过 DHCP 从路由器接收的 IP 时(我们的大多数用户都是这样),我只能收到以前配置为位于同一子网 (192.168.1.XXX) 的设备的响应,而无法从默认 10.0.0.1 上的新设备收到任何响应。

但是,我(偶然)发现,如果我使用手动分配的 IP(10.0.0.2)重新配置 Windows 并且不做其他更改,我突然能够从任何子网的所有设备接收消息。这让我觉得我的代码没问题,但我遗漏了有关 DHCP 或 Windows 如何处理 UDP 响应的一些信息。有人能告诉我需要做什么才能让它工作吗?

先感谢您!

编辑

台式电脑通过有线网卡连接到路由器。所有其他设备都连接到一个交换机,该交换机也直接连接到路由器。当在 Windows 中将 PC 配置为自动获取 IP 时,它会收到 192.168.1.112。其中两个设备手动设置为 192.168.1.XXX 地址,第三个设备默认为 10.0.0.1。这些设备没有 DHCP 模式。

另一个注意事项:无论 PC 是使用 DHCP 还是静态 IP,我都已确认广播消息确实到达了另一个子网 (10.0.0.1) 上的设备。设备对我发送的命令做出适当响应的事实证实了这一点。问题完全在于设备的网络响应将其返回到我的应用程序。我不知道是 Windows 还是我的应用程序阻止了响应,但我不认为是路由器,因为当我为 PC 提供静态 IP 而无需更改网络上的任何其他内容时,我可以获得响应。

答案1

问题在于您的硬件,并且是基本的网络问题,解决方案是为硬件指定(或设置)一个与您所连接的子网相同的 IP 地址(192.168.xx),这是因为同一子网中的设备可以相互通信(这就是为什么更改为 10.xxx 地址有效的原因),但它们不能与其他子网通信(10.xxx 和 192.168.xx 是不同的子网),除非您设置了默认网关。不要误会我的意思,但我建议您查看一些网络材料(思科材料在互联网上广泛可用),这样您就可以了解一些基础知识。

相关内容