+ -
当前位置:首页 → 问答吧 → socket连接,一段时间无请求会自动断开吗?

socket连接,一段时间无请求会自动断开吗?

时间:2010-07-14

来源:互联网

最近一次编写的一个服务情况如下:

在windows平台局域网内socket连接都很正常,不论是否请求均不会有断开现象,

而在linux平台下,只要无请求,一段时间后必然断开,而服务端和客户端却无异常

但请求时发现客户端要么重建了一个连接,要么连接出错;这时服务端才在一小段时间之后报客户端断开.

作者: bbjmjmj   发布时间: 2010-07-14

不知是否和linux的tcp_keepalive_time 有关?

作者: bbjmjmj   发布时间: 2010-07-14

信号中断的可能

作者: c/unix   发布时间: 2010-07-14

是不是防火墙干的?

作者: hellioncu   发布时间: 2010-07-14

防火墙关掉了也这样...

奇怪的是客户端和服务端都不会报连接异常,只有客户端再次请求后两端才会得知,windows+局域网下不会

作者: bbjmjmj   发布时间: 2010-07-14

估计跟中间经过的网络设备有关

作者: hellioncu   发布时间: 2010-07-14



QUOTE:
估计跟中间经过的网络设备有关
hellioncu 发表于 2010-07-14 10:09




   
嗯,可能是IDC防火墙的问题

各位爷,这么说来遇到这种情况应该也不是特殊情况,这要怎么解决?做心跳?

作者: bbjmjmj   发布时间: 2010-07-14

,一段时间后必然断开

这一段时间是多长?

作者: rain_fish   发布时间: 2010-07-14



QUOTE:
,一段时间后必然断开

这一段时间是多长?
rain_fish 发表于 2010-07-14 10:15




   
估计半小时左右

作者: bbjmjmj   发布时间: 2010-07-14



QUOTE:
信号中断的可能
c/unix 发表于 2010-07-14 09:48



何谓 信号中断?

信号中断了 read write 只需要重试,为什么会导致断开连接呢?




这个问题 还是抓包 看看简单,很多种情况, 你的代码问题, 防火墙, 路由器断开 都有可能

作者: benjiam   发布时间: 2010-07-14

建议发心跳包维持连接,再查到底是什么原因造成连接断开的。。

作者: rain_fish   发布时间: 2010-07-14



QUOTE:
估计半小时左右
bbjmjmj 发表于 2010-07-14 10:16



半小时的话,建议你检查网络本身了。 我测试 tcp 的重送方式,没有自己的定时器强行断开的话 测出来 大概是15 分钟,

作者: benjiam   发布时间: 2010-07-14



QUOTE:
半小时的话,建议你检查网络本身了。 我测试 tcp 的重送方式,没有自己的定时器强行断开的话 测出来 大 ...
benjiam 发表于 2010-07-14 10:21




   

嗯,我没有测算这个时间,可能就是15分钟.

因为我是以socket句柄作hash确认会话身份的,重送是否会让服务端认为是个新连接?

作者: bbjmjmj   发布时间: 2010-07-14

大家救命喽

作者: bbjmjmj   发布时间: 2010-07-14