0

我正在开发一个分布式应用程序,其中一组逻辑节点相互通信。

在初始发现阶段,每个逻辑节点启动并向网络发送一个 UDP 广播数据包,以通知其余节点其存在。

对于不同的物理主机,这可以通过同意端口号并跟踪从其他主机接收到的 UDP 广播来轻松处理。

我的问题是 - 我需要能够处理同一台机器上的多个逻辑节点的情况。

所以在这种情况下,我似乎不能两次绑定到同一个端口。如果同一个盒子上有两个逻辑节点,我该如何处理节点发现情况?非常感谢提前!

4

1 回答 1

0

您的选择是:

  1. 创建一个 RAW 套接字并监听特定 NIC 上的所有数据包,这样,通过查看每个数据包的内容,该过程将识别数据包是否发往自己。问题在于您必须处理大量数据包。这就是我们操作系统的内核将套接字绑定到进程的原因,因此流量得到最佳分配。

  2. 创建一个专门的服务,即一个守护进程,它将处理可用于执行工作的新进程的公告。启动时,该进程必须向服务宣布其端口号。这通常是如何完成的。

  3. 为每个要运行的进程使用虚拟 IP 地址,每个进程绑定到不同的 IP 地址。如果您在本地网络上运行,这是最简单的方法。

  4. 定义端口范围并在您定义的所有 IP 地址上扫描此范围。

于 2012-10-14T18:50:01.810 回答