基于tcp,一个socket连接已经被keep-alive杀掉了。这个时候再调用Shutdown跟Close会有什么问题吗???????????

解决方案 »

  1.   

        或者keep-alive是自动关闭tcp连接,还是将错误返回给应用程序让自己来关闭连接???
      

  2.   

    你就写出一个代码,让我看看——用你的代码——你是如何知道“被杀掉了”。如果不能,那么你自然要正规地shutdown或者至少要close。
      

  3.   


        C#的socket有提供保活机制的,SetSocketOption里面设置的。问题是客户端突然异常掉线了,没有发FIN过来。服务端的TCP就不知道客户已经断开。所以它用保活定时探测。
        然后tcp探测到该客户连接已经断开,释放掉该连接。
        我的问题是,tcp属于内核层,他释放掉了连接跟tcb,但是在应用层如果连接释放了,还要很多东西需要处理比如资源释放。也就是怎么通知倒应用层的??? 我不知道你说的偶尔是什么意思。
      

  4.   

    不会,只要socket对象没有被销毁掉,就可以调用那两个方法关闭