精确的判断网络是否可用
精确的判断网络是否可用
答案或建议:
Socket类的Connected属性往往不能精确的判断出网络是否连接,下面这段代码可以解决这个问题
/// <summary>
/// 是否已经连接
/// </summary>
public virtual bool Connected
{
get
{
try
{
//检查socket的状态是否可读
if(m_socket.Connected &;amp;&;amp; 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;
}
}
文章来源:http://www.baikewenda.com/tech/dev/7/5/a132128531.htm
其它内容推荐:
→ 对方发了数次邮件都已成功发出,我为什么仍然收不到?
→ 怎么将文档在另外一台电脑中打印出来?
→ “我的文档”跑到“我的电脑”里,怎么也删除不掉
→ 什么叫博克?
→ 怎样发短信让对方不见我的号码
→ 用信纸打印东西?
→ 解决IE不能保存成mht文件的错误
→ Vista中没有Telnet功能了?
→ U盘和手机内存卡做成启动盘后如何恢复原样
→ 光盘式DV怎样播放拍摄的影片
→ iPhone普通方法删不了的程序要怎么删除?
→ iPad上同步进去的pdf文件保存在那个文件夹下?
→ ipod touch死机怎么办?
→ iphone如何更改闹钟里snooze的时间长短
→ wm6.5系统怎么手动换字体?
→ 接听电话死机的解决办法有什么?
→ 怎么将文档在另外一台电脑中打印出来?
→ “我的文档”跑到“我的电脑”里,怎么也删除不掉
→ 什么叫博克?
→ 怎样发短信让对方不见我的号码
→ 用信纸打印东西?
→ 解决IE不能保存成mht文件的错误
→ Vista中没有Telnet功能了?
→ U盘和手机内存卡做成启动盘后如何恢复原样
→ 光盘式DV怎样播放拍摄的影片
→ iPhone普通方法删不了的程序要怎么删除?
→ iPad上同步进去的pdf文件保存在那个文件夹下?
→ ipod touch死机怎么办?
→ iphone如何更改闹钟里snooze的时间长短
→ wm6.5系统怎么手动换字体?
→ 接听电话死机的解决办法有什么?