首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

socket联接断开后重连很慢

2012-06-21 
socket连接断开后重连很慢我做客户端去链接服务器,连接成功后在运行过程中如果出错,那么我会调用closesock

socket连接断开后重连很慢
我做客户端去链接服务器,连接成功后在运行过程中如果出错,那么我会调用closesocket()函数关闭这个连接,然后重新去连接该服务器,这时需要很久才能连上。。。。。。。有谁知道这是什么原因?

[解决办法]
服务端没有io多路复用?
[解决办法]
“连接成功后在运行过程中如果出错,那么我会调用closesocket()函数关闭这个连接,然后重新去连接该服务器,这时需要很久才能连上。。。。。。。”

可能原因:
1. 服务器端的accept有些问题。这个你可以通过另外的一个模拟server来验证一下,看client是不是一样connect很慢。如果同样是的话,那么就是你的client程序的问题。

2. client程序出问题。可能原因有你是否设定了socket的延迟属性,即setsockopt了SO_LINGER,closesocket后,socket并没有马上关闭,而是等未send的数据send完以后,才close
[解决办法]

怀疑是SOCKET的TIME_WAIT状态造成的。

请楼主用netstat监视一下断开连接后,server,client的状态。尤其关注TIME_WAIT。
另外强烈怀疑LZ客户端使用了bind函数到了指定客户端口(不调用bind,默认是临时端口)。请楼主确认是否如此。

热点排行