我的机器上有两个网卡,配置了两个独立的 IP 地址。两个 IP 地址都属于同一个网络。我是否正确地说,当我创建一个特定于这些 IP 地址之一的套接字时?
更新:
这是我的情况:
我有一个位于 192.168.0.10 的硬件设备。它通过 udp 与 (192.168.0.11, 50000) 和 (192.168.0.12, 50000) 通信。硬件设备通过两个端口执行此操作,如下所示:(192.168.0.10, 49000) 和 (192.168.0.10, 49001)。
我通过脚本创建端口 (192.168.0.11, 50000) 和 (192.168.0.12, 50000),以便记录和操作通信,然后将数据转发到两个能够与硬件通信的模拟器。
所以实际上,我的脚本是“中间人”,我在其中记录和破坏数据以测试硬件。
这是我的脚本的套接字接口:
IP 1 - Channel 1
External_socket = (192.168.0.10, 49000) ** Hardware
External_side_socket = (192.168.0.11, 50000) ** Script
Simulator_side_socket = (192.168.0.11, 50001) ** Script
Simulator_socket = (192.168.0.11, 50002) ** Simulator
IP2 - Channel 2
External_socket = (192.168.0.10, 49001) ** Hardware
External_side_socket = (192.168.0.12, 50000) ** Script
Simulator_side_socket = (192.168.0.12, 50001) ** Script
Simulator_socket = (192.168.0.12, 60002) ** Simulator
这按预期工作,并且为每个通道记录了正确的数据。
但是,如果我进行两个简单的更改,它就会停止工作:
1)我将第二个模拟器的配置文件从60002改为50002,同时保持ip地址为192.168.0.12。
2) 在我的脚本中,我还将 IP2 的 60002 更改为 50002。
突然,来自第二个通道的数据到达了第一个模拟器。怎么会这样?.net 有一个IPAny,我想知道模拟器是否以某种方式使用它并忽略其配置文件中的 IP 地址。你认为这可能是这里的问题吗?
谢谢,
巴里