原帖由 connet 于 2006-8-25 17:50 发表
如果一端能确定某一段时间内必须有数据到达, 可由此判断中断.
楼主的 select 能检测到中断吗?
原帖由 苦中作乐 于 2006-8-25 18:48 发表
可以考虑用启动独立的探测线程发送OOB心跳~!
原帖由 nuclearweapon 于 2006-8-25 10:05 发表
本人看了此贴
客户端 可以分为: A、可控制 B、不可控制
服务端 可以分为: C、select类非多process/thread D、多process/thread
原帖由 yuanyawei 于 2006-10-16 17:27 发表
setsockopt( m_Sock, SOL_SOCKET, SO_RCVTIMEO, (char*)&m_nTimeOut, sizeof( int ) );
如果到时间了确实没数据来怎么办?认为是连接断开了吗?应该不可以,那怎么办?
你试试拔网线看看?
其实重点也 ...
原帖由 醉卧水云间 于 2006-10-16 20:14 发表
超時会错,你可以认为连接无效了。
客户端和服务端连接建立后没什么区别。
原帖由 langue 于 2006-10-16 20:21 发表
同意第二句话。服务器和客户端,角色有时候可以互换。木马控制端就是实际的客户。
原帖由 nuclearweapon 于 2006-8-25 10:05 发表
基于socket tcp的c/s模型中,如果server端只有当client给出request的时候才能作出response的时候
server端不得不面临这样的设计问题:
如果client的是异常掉线,比如pc 掉电,拔掉网线等的类似情况,导致server一直占用一些系统资源(
主要指由于socket引起的)直到大约2小时以后(tcp socket的SO_KEEPALIVE option)server端才会释
放这些资源。tcp只能保证这些的。 但是,一般不会轻易修改tcp_keepalive_time = 7200(秒)(sysctl)。
除非为了做一些试验。那么,只能在应用层建立适当的time out机制。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |