怎么衡量C#Socket服务性能的可靠性

2024-12-12 09:50:46
推荐回答(1个)
回答1:

c#中的Socket.Connected 不是指当前是否处于连接状态,这个是挺讨厌的。其实通过发包是肯定可以自动是否处于连接状态。下面是不用发包的检查办法

用Socket中的poll方法检查

1
2
3
4

static bool IsSocketConnected(Socket s)
{
return !((s.Poll(1000, SelectMode.SelectRead) && (s.Available == 0)) || !s.Connected);
}

不过,如果客户端不是程序退出、电脑关机等正常断线方式,而且因为网线被拔等非正常断线,这种方法没有用。还是老老实实,通过服务器定期向客户端来发包来检查的好,这样比较靠谱,而且肯定正确,就是服务器累了点