您的位置:首页 > 理论基础 > 计算机网络

socket 精确的判断出网络是否连接

2010-07-29 10:52 309 查看
socket类的connected属性往往不能精确的判断出网络是否连接,下面这段代码能解决这个问题

/// <summary>
/// 是否已连接
/// </summary>
public virtual bool connected
{
get
{
try
{
//检查socket的状态是否可读
if(m_socket.connected && m_socket.poll(0, selectmode.selectread))
{
byte[] abyte = new byte[1];
//因为tcp/ip协议无法精确的判断网络是否可用
//试读一个字符,peek参数指定读取的字符不会从缓冲区中移除
//如果可读则表示连接可用
if(m_socket.receive(abyte, 0, 1, socketflags.peek) != 0)
return true;
close("disconnected.");
return false;
}
}
catch(socketexception e)
{
onexception(e);
}
return m_socket.connected;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: