内容见标题,请教自位怎么实现.同步中可以设置,可异步我不知怎么做.谢谢了

解决方案 »

  1.   

    貌似没有吧。
    要结束挂起的endreceive 请调用socket.close().
    估计还是要用个心跳包的机制吧?
      

  2.   

    http://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket_properties.aspx
    ReceiveTimeout SendTimeout
      

  3.   

    我的是长连接哦,如果我用了Close那么下次就又要重新连接了
      

  4.   


    是的。你endreceive如果长时间都没有收到数据。那么该链路你肯定应该close了!
      

  5.   

    其实基本可以不考虑这个问题。因为如果客户端close或者异常关闭了程序,endreceive会触发read字节长度为0或者异常2种情况的流程,你可以根据这个进行具体操作
      

  6.   

    我不知道是不是C#的socket底下做了什么封装,如果都是客户端和服务器端都是C#的,那么无论哪一方正常关闭或者异常关闭,对方都会很快收到消息,但如果是其他语言开发的比如c++,如果C++方程序异常关闭,那么C#方收到对方已经关闭的消息的时间不确定。所以要个心跳包还是很必要的。