当与远程主机建立连接后,会有一个socket,如何可以随时判断这个socket是否还有效呢,有没有什么简单的方法。在不向远程主机发送数据包的情况下,知道这个socket是否还有效呢。

解决方案 »

  1.   

    socket的有效性就是体现在它可以‘连接’,所以还是需要尝试连接才能判断它是否有效。
      

  2.   

    socket == INVALIDE_SOCKET证明socket是无效的
    否则有效
      

  3.   

    你可以借鉴java的相关只是:
    jdk1.4里面已经有了新的函数,专门解决你这个问题
    如果<1.4,只能用上面的方法
    +--java.net.SocketException
    |
    +--java.net.ConnectException
      

  4.   

    判断socket值
    来保持socket的连接,可以铜鼓heartbeat
      

  5.   

    to nuaawenlin(飘人) :socket连接后,socket != INVALIDE_SOCKET,证明有效,这时候拔掉网线,服务器和客户端不会有任何消息,socket值还是有效,这时候这个socket还能收发数据?
      

  6.   

    其实楼主的问题是判断一个连接是否有效,而不是socket是否有效。我想在远程主机崩溃的情况下,如果不发送数据,底层tcp也不会知道断了没有,要么在没有设置keeplive的情况下等他自己断掉,然后通知应用层,要么等tcp自己发送keeplive包来发现断掉。
    看上去好像没法满足楼主的要求啊。期待牛人。