[C#]精确的判断网络是否可用
2004-10-05 16:30
337 查看
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# 判断当前网络是否可用
- 精确的判断网络是否可用(转贴)
- C# 判断计算机网络是否可用
- 判断当前网络是否可用
- Android判断当前网络是否可用--示例代码
- Android中判断网络连接是否可用及监控网络状态
- android 判断网络是否可用
- Reachability用于在任何地方判断网络是否可用
- Android判断网络连接是否可用(代码)
- Android 判断当前网络是否可用简单实例
- Reachability用于在任何地方判断网络是否可用
- C# 通过分析netstat -an所得信息 查看本机所监听的端口 及判断某端口是否可用
- Android中判断网络连接是否可用及监控网络状态
- Android 判断网络是否可用、网络类型WIFI/2G/3G/4G及获取IP
- Android检测网络状态,判断当前网络是否可用
- 【Android】使用ConnectivityManager与NetworkInfo实现判断当前网络环境是否可用
- Android中判断网络连接是否可用及监控网络状态
- Android中判断有无可用网络(是否是3G或者WIFI网络)