解决方案 »

  1.   


    没错,服务器主动向客户端发起连接请求,是非常不合理的!
    通信中断,客户机只能重新建立连接,然后选择重传或者断点续传。
    通信中断后,服务器是不会像客户端发起连接请求的,服务器只会保持session一段时间,然后从内存中清掉如果这段时间内客户端向服务器发起连接请求,那么session再次延长有效期。如果session被清掉了,客户端再连接,就会重新开始会话
      

  2.   

    这个机制本身就很不靠谱
    为什么是服务器端维持心跳??
    而且socket断开,不管是服务器端还是客户端,会立即知道,不用等10分钟没数据才知道断了啊
      

  3.   

    已经让硬件设备进行了相应的更改另外在测试的过程中,还是发现了原来的问题,在异步接收的时候
     Handler.Receive()报错,异常为:连接已断开了,请处理:System.Net.Sockets.SocketException (0x80004005): 远程主机强迫关闭了一个现有的连接。
       at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
       at System.Net.Sockets.Socket.Receive(Byte[] buffer)
       at GSFTCollectionService.BLL.SocketServer.ReadCallback(IAsyncResult ar) in E:\新建文件夹\2014-08-20离线定位\GSFTCollectionService\BLL\SocketServer.cs:line 201其中的201行就是 Handler.Receive()请问,这个是什么原因
      

  4.   

    请问你题目中所提的抓包工具是用来做什么的?是什么工具?初学者,也正好要做socket编程,请教下,谢谢。