【发布时间】:2009-04-15 20:29:57
【问题描述】:
测试用例:
- 在连接开始之前它应该返回 false
- 连接被另一端关闭返回false
- 连接被客户端关闭返回false
-
即使没有可用数据也存在连接返回 true
class MyConnection { //Assume I have all initialization for _socket public bool IsConnected() { return !(_socket.Poll(1, SelectMode.SelectRead) && _socket.Available == 0); } private Socket _socket;}
class Test { static void Main(string[] args) { MyConnection my = new MyConnection() if(my.IsConnected()) /*always return true even when I am not connected*/; } }
有什么办法可以防止这种情况发生吗?
到目前为止,没有一个答案是令人满意的......
可以做到以下几点:
public bool IsConnected()
{
bool bConnected = false;
bool bState = _socket.Poll(1, SelectMode.SelectRead);
try
{
if (bState && (_socket.Available == 0))
bConnected = false;
else
bConnected = true;
}
catch (SocketException)
{
//_socket.Available can throw an exception
bConnected = false;
}
return bConnected;
}
【问题讨论】:
-
拔掉网线? :-)
-
如果您发布您真正想要实现的目标,您可能会发现它更有成效。