精确的判断网络是否可用(转贴)
2004-10-10 20:12
441 查看
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;
}
}
/// <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;
}
}
相关文章推荐
- [C#]精确的判断网络是否可用
- 精确的判断网络是否可用
- android 判断当前环境网络是否可用及获取当前网络类型
- android 判断网络是否可用
- Android判断网络是否可用
- 判断网络是否可用
- Android开发_判断网络连接是否可用
- 判断网络是否可用
- mono 判断系统的网络是否可用
- android 判断网络是否可用(2G/3G/WLAN)
- Android中判断有无可用网络(是否是3G或者WIFI网络)
- android项目判断是否有可用网络
- 【Android】使用ConnectivityManager与NetworkInfo实现判断当前网络环境是否可用
- Android中判断有无可用网络(是否是3G或者WIFI网络)
- Android 判断当前网络是否可用简单实例
- 判断网络是否可用
- 判断网络是否可用
- 判断移动网络是否连接可用!
- Android中判断网络是否可用的代码
- 判断网络是否可用