TCP socket建立后,如果网线被拔了。如何主动得知这一事件?Windows倒是挺快的!SOCKET编程里面,能够捕获这样的事件么?比如采用一种I/O模型。

解决方案 »

  1.   

    http://topic.csdn.net/t/20040712/15/3167279.htmlTCP掉线重新连接,资源的释放问题
    http://topic.csdn.net/t/20050425/11/3964292.html
      

  2.   

    心跳包不好。msn等windows程序肯定不是使用的心跳包。
      

  3.   

    GetTcpTable() 是怎么用来检测短线的?好像有TX提到这个函数?我始终觉得heartbeat不是一个很好的机制,有些场合下是不适合发送此类信息的。
      

  4.   

    在一个连接套接字上进行select
      

  5.   

    看看SIO_ROUTING_INTERFACEQUERY、SIO_ROUTING_INTERFACECHANGE、SIO_ADDRESS_LIST_QUERY、SIO_ADDRESS_LIST_CHANGE这几个IO控制命令,当接口发生变化时你会得到相应的通知。
      

  6.   

    SELECT模型,设置一个接受数据超时时间就OK了
      

  7.   

    如果断开的不是和本机直连的网络,而是中间经过的网络的一个段,它就怎么也快不起来了。
    我也遇到类似的问题,感觉只能通过判断超时了。无论断开还是超时对应用来说都是一定时间内没有发出去数据,断开没断开的没区别,不可能应用程序一直等下去。
    例如网络没断开,你的程序socket被封杀……