gpt4 book ai didi

c# - 拔下网线时 socket 会发生什么情况?

转载 作者:太空狗 更新时间:2023-10-29 20:06:43 25 4
gpt4 key购买 nike

我有三个使用套接字相互通信的应用程序。他们可以都住在自己的机器上,但他们也可以共享一台机器。现在我有两个在同一台机器上,第三个在自己的机器上。我试图让我的通信防弹,所以我拔下电缆并终止应用程序以确保一切按预期工作。

这里有一个简单的草图:

alt text

现在,当我拔下连接到 PC2 的网络电缆(红色连接“Con B”)时,内部连接停止通话(蓝色连接“Con A”)。我从套接字上的“应用程序 1”发送内容,但永远不会到达“应用程序 2”。

我已经建立了一种机制来发现这一点并断开连接然后重新连接,然后我可以随心所欲地拔下电缆,“Con A”就会继续工作。这只是第一次。

我已确认在断开“Con B”之前通过“Con A”进行通信。
我连接和重新连接的方式完全相同,代码相同,所以没有区别。

发生了什么事?

由答案触发的附加信息:PC 1 和 PC 2 共享地址直到最后一个字节。
我有一个内部保持事件机制,我发送一条消息并期望每 10 秒收到一次响应。
当我杀死 App 3 时,这不会发生,只有在拔下电缆时才会发生。

最佳答案

您为“Con A”使用什么地址?如果您使用的地址绑定(bind)到外部网络适配器,即使您正在与同一台机器通话,那么您所描述的情况也可能发生。

你可以做的是使用地址 localhost (127.0.0.1) 作为“Con A”,它应该完全独立于外部网络上发生的事情。

关于c# - 拔下网线时 socket 会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/438196/

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