关于网络连接connect使用Select判断超时问题

coloriy 2010-10-26 02:28:16
我在client端调用connect(非阻塞模式)与服务器端建立tcp连接,调用connect后调用select判断socket是否可读,可读则发送数据请求命令,但是在我测试时发现,当我拔掉网线,或者关闭服务器端程序后,sendcmd发送命令成功,接收命令失败,此时我马上去重新建立连接,进入select得到socket确可读,即select成功,不知道为什么,后来我在重新连接之前延迟了1000ms,再去调用select,select才提示失败,重连失败,我现在不明白,为什么,网络连接断开后,立即调用select返回的状态却不对,请高手作答,谢谢啦。

程序背景,客户端向服务器端发送命令,如果发送失败,则认为网络连接失效,再次调用重连函数,执行tcp连接,该链接采用非阻塞的方式建立,为了在超时时间内能够判断是否连接成功,采用了非阻塞方式,调用select。

问题就出在这,连接断开后,建立的新的socket,然后调用connect,如果立即调用select判断连接是否成功,总是返回成功,而等待一段时间再次建立连接则返回失败。

...全文
433 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
coloriy 2010-10-26
  • 打赏
  • 举报
回复
重新创建了,每次都先closesocket,然后调用socket函数创建新的socket,在执行connect,select
lijianli9 2010-10-26
  • 打赏
  • 举报
回复
你的socket有没有重新创建,

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧