gpt4 book ai didi

套接字和多个 IP 地址

转载 作者:行者123 更新时间:2023-12-03 11:56:06 29 4
gpt4 key购买 nike

我的机器上有两个网卡,配置了两个独立的 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),以便记录和操作通信,然后将数据转发到两个能够与硬件通信的模拟器。

所以实际上,我的脚本是“中间人”,我在其中记录和破坏数据以测试硬件。

这是我的脚本的套接字接口(interface):

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

这按预期工作,并且为每个 channel 记录了正确的数据。

但是,如果我进行两个简单的更改,它就会停止工作:

1)我将第二个模拟器的配置文件从60002改为50002,同时保持ip地址为192.168.0.12。

2) 在我的脚本中,我还将 IP2 的 60002 更改为 50002。

突然,来自第二个 channel 的数据到达了第一个模拟器。怎么会这样? .net 有一个 IPAny 我想知道模拟器是否以某种方式使用它并忽略了其配置文件中的 IP 地址。你认为这可能是这里的问题吗?

谢谢,

巴里

最佳答案

我会说这是正确的。取决于您要在语句中使用的抽象级别。

创建套接字时,它不会绑定(bind)到 IP 地址。查看 Berkeley socket 上的 Wikipedia 文章您会看到第一个创建套接字(socket()),说明域、套接字类型和系列。然后套接字被绑定(bind)(bind())到一个地址,例如 10.0.0.1。然后,根据您要使用的套接字,您可以将其设置为监听、接受或连接。

本地主机具有与任何其他设备一样的 IP 地址,即 127.0.0.1。您创建套接字并将其绑定(bind)到 127.0.0.1。然后,该套接字就像您可以与之通信的任何其他套接字一样工作。

您还可以阅读关于 Network Socket 的 Wikipedia 文章.

关于套接字和多个 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10119983/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com