如何用socket判断网线断开

xyken 2008-10-28 07:38:42
为做一个网卡测试程序,我使用的是socket发送和接收数据包进行检测,对网线拨掉的检测我采用的是心跳方式,即:利用时钟控件每秒钟抓取一次连接,失败则表示网线断开如:
private void timer2_Tick(object sender, EventArgs e)
{
check();
check_close();
}

void check()
{
try
{
checkInfo = null;
checkInfo = new IPEndPoint(IPAddress.Parse ("10.12.8.207") , 6600);
checkSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream , ProtocolType.Tcp );
checkSocket.Bind(checkInfo);
}
catch
{
MessageBox.Show("网线拨除!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
void check_close()
{
checkSocket.Close();
}
以上代码在网线拨除后可以抓取错误,但是它会过10s秒左右才会抓到错误,而我想实现网线一拨程序立即报错,不知各位大侠有何高见,请赐教.
...全文
173 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
xyken 2008-10-28
  • 打赏
  • 举报
回复
其实,socket用TCP连接协议的原理,是先进行连接,然后利用socket 作为中间层或者桥梁对服务器和客户端的数据进行通讯,而作为中间层的socket就应当有缓存,所以使用以上socket去连接后判断网线断开,就必定有一个10~30秒的缓存期,等到缓存数据调用完毕后,才抓取到网线已经被拨取的错误吧.

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧