我有许多服务器在不同的机器上运行并监听它们众所周知的 IP 地址和端口。我想在服务器之间建立连接(第一次尝试获胜)并根据众所周知的 IPAddress/端口对对调用者进行身份验证。
我遇到的问题是,我不能重用侦听器端口来启动新连接 - 所以这种身份验证是不可能的(即使连接套接字稍后可以通过通信实例参数唯一标识)。
我想保持合作伙伴之间的对称性(没有什么像协调节点的“主”一样)。这个问题有解决方案吗?
[据我所知,SO_REUSEADDR 不是为此而设计的……]
更新:我刚刚定义了一些包含 IPAddress 和端口号对的配置。这个想法是使用这些对来建立连接。因此,具有配置的各方可以轻松检查传入连接。后来我想把所有东西都放在 xinetd 后面,让他验证传入的地址/端口组合。
总结:如果理论上可以通过使用机器特定(IPAddress,端口)对建立网络,则不可能通过等效的通信节点(其中“一半”必须是客户端,另一半是服务器)来实现它。我对吗?[我们也可以讨论问题背后的动机,但这不是问题]