社区
网络编程
帖子详情
重归技术区,散200分,顺便问个问题:两台机器已经通过TCP/IP连接好了,但拔掉网线,如何检测到这个事件?
pcitman
2004-01-01 12:00:05
我测试了一下,拔掉网线后,一客户端的send函数不提示出错,能正确返回。
居然连断了网线都不知道,那么TCP/IP的面向连接的可靠性又体现在哪里?
...全文
227
27
打赏
收藏
重归技术区,散200分,顺便问个问题:两台机器已经通过TCP/IP连接好了,但拔掉网线,如何检测到这个事件?
我测试了一下,拔掉网线后,一客户端的send函数不提示出错,能正确返回。 居然连断了网线都不知道,那么TCP/IP的面向连接的可靠性又体现在哪里?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
27 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
pcitman
2004-01-02
打赏
举报
回复
回复人: sboom(+-LingCh-+) ( ) 信誉:85 2004-01-01 23:23:00 得分:0
TCP的连接可靠性的意思是你发送的包会被对方完整的收到,而不是说你的线段了也能发送,你的想法真不可思议。。。。
___________________________________
我不是要线断了还能发送,我只是想发送的时候如果线断了要知道这是发不出去了
sharkhuang
2004-01-02
打赏
举报
回复
非要上层判断!可以定时send 不成功连接就断开!
但是不能准确判断是网线断开!
所以你的物理判断必须物理硬件检查
sharkhuang
2004-01-02
打赏
举报
回复
tcp send如果成功那一定是个来回!
shenke410
2004-01-02
打赏
举报
回复
Ping……
呵呵,接分!
九重霄
2004-01-02
打赏
举报
回复
同意xiaohyy(醉大饿极)的观点。
taianmonkey
2004-01-02
打赏
举报
回复
返回的错误代码是:
10049
lcs1980
2004-01-02
打赏
举报
回复
开一个线程,并在这个线程中定时检测连接状况
victor_cui
2004-01-02
打赏
举报
回复
可以在应用中实现心跳包自己检测
101monster
2004-01-02
打赏
举报
回复
呵呵,恭喜恭喜!新年快乐!
VisualStudio
2004-01-02
打赏
举报
回复
转自驱动开发网
发信人: rain (夜猫子大王), 信区: SysInternals
标 题: Re: 请问实时发现网络down掉的原理?(转载)
发信站: 武汉白云黄鹤站 (2001年03月31日09:57:05 星期六), 转信
实时检测网线被拔掉是需要网卡设备驱动程序支持的,
如果驱动程序不支持是无法实现的,NDIS4要求设备驱动程序
最好提供CheckForHangHandler回调函数。2000会每隔2秒钟
调用此函数。驱动程序在此函数中检查网卡连线状态,
如果发生了改变,即拔去了网线或接上了网线,
驱动程序就会调用NdisMIndicateStatus通知所有的上层NDIS协议驱动程序.
其中: NDIS_STATUS_MEDIA_DISCONNECT 指示网线被拔掉,
NDIS_STATUS_MEDIA_CONNECT 指示网线被接上
NDIS_STATUS_LINK_SPEED_CHANGE 指示网卡速度改变,10/100自适应网卡才有。
网卡一般都有 status register 指示当然的连线状态,
也有网卡是通过获得 led status 来知道当前的连线状态的,
即绿灯亮表示连线,灭表示没有。
有些网卡拔掉或接上网线时会产生中断,在中断处理程序中一般也
检测网络连线状态并调用NdisMIndicateStatus,这样连线状态
在2000中就实时反应出来了,否则会在2秒钟内,即NDIS调用CheckForHangHandler后。
这个功能是微软在PC97规范中定义的,所以ndis3没有这个功能。
linux对这个没有要求,novell netware对这个有要求,其它的操作系统我也不清楚。
upuper
2004-01-02
打赏
举报
回复
up
ndy_w
2004-01-02
打赏
举报
回复
自己做ack。
可以判自己的网线,但不能判对方。
duyhui
2004-01-02
打赏
举报
回复
只能程序检查连接状态了
RomanticProgrammer
2004-01-01
打赏
举报
回复
我刚才试了一下,的确试这样的。好像tcp有个保活定时,只有超过这个时间后,send才失败!
private_guo
2004-01-01
打赏
举报
回复
我们的实现是要求双方一直做心跳测试,从而判断网络的状况,如果发现异常就记录下时刻,在规定时间内得到reset信息后从这个时刻开始恢复,否则,中断联系。
fzd999
2004-01-01
打赏
举报
回复
很容易阿
检测到关闭连接消息,同时还带着错误代码,就是非法断线了。
具体到各个模型,可以写个switch case语句来判断:)
yintongshun
2004-01-01
打赏
举报
回复
开个ping线程,不断检测,可以采取发送数据包的方式,只发送一个字符就可以
pcitman
2004-01-01
打赏
举报
回复
LINUX也有这问题的!
broadoceans
2004-01-01
打赏
举报
回复
我觉得不应该说是tcp/ip弱智,
而应该说其实现者没有实现好。
如果说弱智,说microsoft好了。
pcitman
2004-01-01
打赏
举报
回复
楼上的各位,我也一直以为TCP/IP不会弱智到这个地步,但事实确实如此,不是什么网卡驱动的问题。
情况是这样的:断开网线后,被断网线的机器检测到这个信息,但对方不知道,当网线重新连接上时,对方才检测到一个RESET信息!
查了半天的书,仍没有解决办法……
加载更多回复(7)
TCP
连接
异常断开
项目终于上线了,伴随着人数的逐步上升,最近查看日志,发现了大量
连接
超时的日志。项目中使用的是
TCP
长
连接
,为了保证网络资源及时有效的释放,程序中是1
分
钟一次心跳,3
分
钟无心跳即认为超时。此为本文的背景 相对于
TCP
连接
建立时的三次握手,我想很多人对断开
连接
的四次招呼就不是那么熟了,这里先谈一下
TCP
的断开,下面给出
TCP
断开
连接
的过程图: (peakflys注:TIME_WAIT状态到C...
关于
TCP
长
连接
和发送心跳的一些理解
作者:郭无心链接:https://www.zhihu.com/question/35013918/answer/63664974来源:知乎著作权归作者所有,转载请联系作者获得授权。游戏服务器常常有心跳包的设计。我们的心跳包就是为了防止Socket断开
连接
,或是
TCP
的
连接
断开吗?答案是否定的,
TCP
连接
的通道是个虚拟的,
连接
的维持靠的是两端
TCP
软件对
连接
状态的维护。
TCP
...
Linux性能优化实战学习笔记:第三十四讲=====网络/带宽
Linux性能优化实战学习笔记:第三十四讲 一、上节回顾 上一节,我带你学习了 Linux 网络的基础原理。简单回顾一下,Linux 网络根据
TCP
/
IP
模型,构建其网络协议栈。
TCP
/
IP
模型由应用层、传输层、网络层、网络接口层等四层组 成,这也是 Linux 网络栈最核心的构成部
分
。 应用程序通过套接字接口发送数据包时,先要在网络协议栈中从上到下逐层处理,然后才最终送到网卡发送出去;而接收数据包时,也要先经过网络栈从下到上的逐层处理,最后送到应用程序。 了解 Linux 网络的基本原理和收
Linux性能优化实战学习笔记:第三十四讲
一、上节回顾 上一节,我带你学习了 Linux 网络的基础原理。简单回顾一下,Linux 网络根据
TCP
/
IP
模型,构建其网络协议栈。
TCP
/
IP
模型由应用层、传输层、网络层、网络接口层等四层组 成,这也是 Linux 网络栈最核心的构成部
分
。 应用程序通过套接字接口发送数据包时,先要在网络协议栈中从上到下逐层处理,然后才最终送到网卡发送出去;而接收数据包时,也要先经过网络栈从下到上的逐层处理,最后送到应用程序。 了解 Linux 网络的基本原理和收发流程后,你肯定迫不及待想知道,如何去观察网络的
八股文——
TCP
篇(
TCP
实战抓包
分
析)
搬运自“小林coding”,计算机网络精华版八股文
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章