精确的判断网络是否可用(转贴)

王朝asp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

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;

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航