我正在开发一个分布式应用程序,其中一组逻辑节点相互通信。
在初始发现阶段,每个逻辑节点启动并向网络发送UDP广播数据包,以通知其余节点存在。
使用不同的物理主机,可以通过同意端口号并跟踪从其他主机收到的UDP广播来轻松处理。
我的问题是 - 我需要能够在同一台机器上处理多个逻辑节点的情况。
所以在这种情况下,我似乎无法两次绑定到同一个端口。如果同一个盒子上有两个逻辑节点,我该如何处理节点发现案例?非常感谢提前!!
答案 0 :(得分:0)
您的选择是:
创建一个RAW套接字并监听特定NIC上的所有数据包,这样,通过查看每个数据包的内容,该进程将识别该数据包是否用于自己的目的地。这个问题是你需要处理大量数据包。这就是为什么我们的操作系统的内核将套接字绑定到进程,因此流量以最佳方式分布。
创建一个专门的服务,即一个守护程序,它将处理可用于执行工作的新进程的通知。启动时,该过程必须向服务公布其端口号。这通常是如何完成的。
为要运行的每个进程使用虚拟IP地址,每个进程绑定到不同的IP地址。如果您在本地网络上运行,这是最简单的方法。
定义端口范围并在您定义的所有IP地址上扫描此范围。