gpt4 book ai didi

c# - 监听 TCP 服务器应用程序的以太网电缆拔出事件

转载 作者:行者123 更新时间:2023-11-30 13:04:10 25 4
gpt4 key购买 nike

我有一个 C# TCP 服务器应用程序。当 TCP 客户端与服务器断开连接时,我检测到它们断开连接,但是如何检测电缆拔出事件?当我拔下以太网电缆时,我无法检测到断开连接。

最佳答案

您可能想要应用“ping”功能,如果 TCP 连接丢失,该功能将失败。使用此代码向 Socket 添加扩展方法:

using System.Net.Sockets;

namespace Server.Sockets {
public static class SocketExtensions {
public static bool IsConnected(this Socket socket) {
try {
return !(socket.Poll(1, SelectMode.SelectRead) && socket.Available == 0);
} catch(SocketException) {
return false;
}
}
}
}

如果没有可用的连接,方法将返回 false。即使您在 Reveice/Send 方法上没有 SocketExceptions,它也应该可以检查是否存在连接。请记住,如果您遇到与连接丢失相关的错误消息的异常,则您不再需要检查连接。
此方法适用于套接字看起来已连接但可能与您的情况不同的情况。

用法:

if (!socket.IsConnected()) {
/* socket is disconnected */
}

关于c# - 监听 TCP 服务器应用程序的以太网电缆拔出事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10298824/

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