| 菜青虫 回复于:2002-07-31 21:59:09
|
pc上面是用的什么系统?win?unix?这个问题应该不是很难解决吧。看在你这么好心的要请客,告诉你吧,我也在上海,有问题直接发mail给我好了,ergataner@hotmail.com,嘿嘿,请客哦。我现在帮你试一下win和freebsd好了。:),有结果,我贴上来。
|
| jkl 回复于:2002-07-31 22:33:13
|
PC上的是red hat 7.3 linux.
;~~~~~~~~~~~~(
|
| iloveunix 回复于:2002-08-01 09:15:48
|
可以使用“带外数据”检测连接状态,又不影响正常的数据传输。
|
| yuejw 回复于:2002-08-01 09:19:09
|
有两种办法可以解决你的问题。 第一种是自己写一个套接字读、写操作超时处理机制,一旦超时就认为对方已经崩溃。 第二种是利用套接口保持存活选项(SO_KEEPALIVE)。
|
| Eisen 回复于:2002-08-01 09:42:36
|
啊。很简单,用ioctl定义一个SO_KEEPALIVE就行了。 不过更好的是自己另外实现一个控制信道在Client和Server 间互通消息。
呵呵。我也是上海的…… //虎视中
|
| iloveunix 回复于:2002-08-01 13:03:23
|
不建议采用SO_KEEPALIVE选项! 因为默认设置是空闲2小时才发送一个“保持存活探测分节”,不能保证实时检测! 当然也可以修改时间间隔参数,但是会影响到所有打开此选项的套接口! 因此还是自己编写超时机制比较好,可以根据应用的可靠性程度灵活设置超时。
|
| netstorm 回复于:2002-08-23 14:41:22
|
看一下Unix网络编程, 利用TCP带外数据,自己做个客户-服务心跳函数
|
| 华夏很行 回复于:2002-08-25 16:11:18
|
只管吃饱不管吃好,每人10碗米饭,撑死你们,哈哈
|
| badeager 回复于:2002-08-28 00:25:30
|
可用发送OOB数据进行心跳检测,这样可避免此类情况!
|
| xiaodixiaodi 回复于:2002-08-31 16:55:16
|
用alarm来缩短此时间!
|
| lzhu 回复于:2002-10-09 15:53:43
|
不知你说的SERVER和CLIENT是指机器还是指通讯端,据我所知,tcp交易的发起是从client开始的吧,还有server向client发请求的吗,server一般收到请求后给client回应,不会主动发交易吧.如果按我说的这样,设置timeout不就ok了,或者要求server给client回应包.
以上想法纯属个人意见
|
| 蓝色键盘 回复于:2003-03-19 13:47:57
|
[quote:617af623ef="lzhu"]不知你说的SERVER和CLIENT是指机器还是指通讯端,据我所知,tcp交易的发起是从client开始的吧,还有server向client发请求的吗,server一般收到请求后给client回应,不会主动发交易吧.如果按我说的这样,设置timeout不就ok了,或者要求server给client回应包.
以上想法纯属个人意见[/quote:617af623ef]1、一旦两个同一或不同主机间进程建立的socket连接,谁给谁发送信息都是任意的。除非一方主动关闭连接或者发生异常。
2、连接connect过程中,client是主动的,而server一般处于accept或select阻塞状态,属于被动的。
|
| 罗格纳 回复于:2003-03-20 10:04:38
|
很简单阿,写一个超时控制模块,难道你以前都不写?
|