我有三个应用程序使用套接字相互通信.他们都可以住在他们自己的机器上,但他们也可以共用一台机器.现在我在他们自己的机器上有两个在同一个和第三个.我正在努力使我的通信防弹,所以我拔掉电缆并杀死应用程序,以确保一切按预期工作.
这是一个快速的草图:
alt text http://i40.tinypic.com/9vch86.png
现在,当我拔下网线到PC2(红色连接“Con B”)时,内部连接停止通话(蓝色连接“Con A”).我从“应用程序1”发送的东西在套接字上永远不会到达“App 2”.
我已经建立了一个发现这种情况并断开连接然后重新连接的机制,之后我可以拔掉我想要的电缆并且“Con A”继续工作.这只是第一次.
我已确认在断开“Con B”之前通过“Con A”进行通信.
我以完全相同的方式连接和重新连接,它是相同的代码,所以没有区别.
发生了什么?
答案触发的其他信息:
PC 1和PC 2共享地址到最后一个字节.
我有一个内部保持活动机制,我发送一条消息,并期望每10秒响应一次.
当我杀死App 3时,只有在拔掉电缆时才会发生这种情况.
解决方法
你在“Con A”中使用了什么地址?如果您使用的是绑定到外部网络适配器的地址,即使您正在与同一台计算机通信,那么您所描述的内容也可能发生.
你可以做的是使用地址localhost(127.0.0.1)作为“Con A”,它应该完全独立于外部网络上发生的事情.