来者有分,将网线断开后recv始终不返回! 将网线断开后recv始终不返回!用netstat 命令看网络状态,显示这个端口还是连接的! 奇怪! 请高手指点! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不能设置超时,因为服务器要等待客户端发送的请求命令,但不知道客户端将在什么时候发送请求命令,所以我采用阻塞状态。网落断开,TCP/IP协议不是知道吗?为什么将网线断开后recv始终不返回呢? keeplive time.或者先send,就会出错. TO:sharkhuang(爱情和程序都读不懂) 呵呵,不明白你的意思,能说详细一点吗? 我也遇到了同样的问题: 当客户端断开,经历FIN_WAIT_1->(大约两分钟)然后自己断开连接; 当服务器断开,将关闭所有的连接上的连接,但listen()继续;我采取超时来处理,即客户端定时向服务器发送查询消息,如果双放有一方OnTimeOut()说明网线端开! 除了网络断开,还有别的情况recv或send不返回的吗?大家有遇到过吗? 网络连接断开可以分为两种:1.正常断开.这类问题可以处理.2.非正常断开.a. 客户端主机突然停电、被损坏、网线被剪断,这是一类;b. 客户端进程被结束任务程序强行中止, 此时物理连接是完好的.对于非正常断开, TCP/IP 协议不能检测, 这是 TCP/IP 的设计问题, 只能通过发送数据包来检测.如 HeartBeat 包. 只要包不能正常发送出去, 不管是基于上述何种原因, 都可以认为网络已经断开.在你的程序中加入两对 Socket ,其中一对用来发送 HeartBeat 包,每隔单位时间发送一次.出错则认为网络已经断开.对于非正常断开, 两对 SOCKET 必然同时断开,这样就可以处理非正常断开了 TCP/IP中,断开连接后,需要通过保活定时器来判断 很简单,设置SO_RCVTIMEO就行,你想阻塞多久就阻塞多久,或者改异步,注册FD_CLOSE tcp其实是可以检测到socket断开的,只是时间比较长而已, 请问OUTLOOK的通讯录怎么读取,有什么接口 呼叫子菜单事件 关于sendmessage的小问题 如何申请大量内存空间? 对话框基础问题求解 请问如何在控制台程序中读取WORD文档的内容? ADO数据类型转化问题,日期类型如何转化,因在com下,不能用COleDateTime. 如果对一个窗口的所有控件进行遍历,并取得EDITBOX之类的控件的内容?[分不够再加] 指条路吧 关于imagelist的问题。 向高手求救:可以使用libmySQL.dll来建立一个MYSQL数据库吗?( 各位大侠能不能讲讲UDP校验和原理并给一份计算校验和的源程序
网落断开,TCP/IP协议不是知道吗?为什么将网线断开后recv始终不返回呢?
呵呵,不明白你的意思,能说详细一点吗?
当客户端断开,经历FIN_WAIT_1->(大约两分钟)然后自己断开连接;
当服务器断开,将关闭所有的连接上的连接,但listen()继续;
我采取超时来处理,即客户端定时向服务器发送查询消息,如果双放
有一方OnTimeOut()说明网线端开!
这类问题可以处理.2.非正常断开.
a. 客户端主机突然停电、被损坏、网线被剪断,这是一类;
b. 客户端进程被结束任务程序强行中止, 此时物理连接是完好的.对于非正常断开, TCP/IP 协议不能检测, 这是 TCP/IP 的设计问题, 只能通过发送数据包来检测.
如 HeartBeat 包. 只要包不能正常发送出去, 不管是基于上述何种原因, 都可以认为网络已经断开.在你的程序中加入两对 Socket ,其中一对用来发送 HeartBeat 包,每隔单位时间发送一次.
出错则认为网络已经断开.对于非正常断开, 两对 SOCKET 必然同时断开,这样就可以处理非正常断开了