关于网络连接connect使用Select判断超时问题
我在client端调用connect(非阻塞模式)与服务器端建立tcp连接,调用connect后调用select判断socket是否可读,可读则发送数据请求命令,但是在我测试时发现,当我拔掉网线,或者关闭服务器端程序后,sendcmd发送命令成功,接收命令失败,此时我马上去重新建立连接,进入select得到socket确可读,即select成功,不知道为什么,后来我在重新连接之前延迟了1000ms,再去调用select,select才提示失败,重连失败,我现在不明白,为什么,网络连接断开后,立即调用select返回的状态却不对,请高手作答,谢谢啦。
程序背景,客户端向服务器端发送命令,如果发送失败,则认为网络连接失效,再次调用重连函数,执行tcp连接,该链接采用非阻塞的方式建立,为了在超时时间内能够判断是否连接成功,采用了非阻塞方式,调用select。
问题就出在这,连接断开后,建立的新的socket,然后调用connect,如果立即调用select判断连接是否成功,总是返回成功,而等待一段时间再次建立连接则返回失败。