gpt4 book ai didi

C#:检查套接字是否具有与服务器的事件连接?

转载 作者:行者123 更新时间:2023-11-30 21:34:56 25 4
gpt4 key购买 nike

我正试图找到一个合法的 wya 来判断套接字是否与服务器有连接。如果他们还没有连接,或者客户端或服务器已经关闭它,这将变得无效。

在我使用此套接字对象连接到服务器之前,此方法当前返回 null。谁能向我解释为什么会这样,我该如何解决?

private static bool IsConnected(Socket socket)
{
return !(socket.Poll(1, SelectMode.SelectRead) && socket.Available == 0);
}

最佳答案

了解套接字是否有效的唯一方法是发送一些东西并取回一些东西。任何其他方式都是谎言。 .Available 仅告诉您当前读取缓冲区中是否有数据。状态是……充其量是不可靠的。套接字可能会在操作系统不注意的情况下死亡。套接字可以被网络硬件人为地欺骗为“事件”——试图防止临时网络故障(特别是对于 wifi 或移动用户)切断所有套接字;但有时该设备永远不会回来,中间的设备不会注意到。这意味着即使是 TCP 级别的断接套接字检测也不可靠

因此:发送某种测试消息并返回一些信息。这是唯一的方式。

关于C#:检查套接字是否具有与服务器的事件连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49694382/

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