最近写的一个android客户端程序,和服务器端采用socket通讯,使用3G网络连接,因为网络可能不稳定,经常出现socket连接断掉的情况,慢是可以理解的,也可以接收,但是socket连接断掉有点烦人,设置的超时时间也不短,请问各位大哥有没有什么方法解决socket经常断掉的问题

解决方案 »

  1.   

    报错信息如下02-02 15:57:32.764: WARN/System.err(1743): java.net.SocketException: Connection reset by peer
    02-02 15:57:32.764: WARN/System.err(1743):     at org.apache.harmony.luni.platform.OSNetworkSystem.readSocketImpl(Native Method)
    02-02 15:57:32.764: WARN/System.err(1743):     at org.apache.harmony.luni.platform.OSNetworkSystem.read(OSNetworkSystem.java:358)
    02-02 15:57:32.764: WARN/System.err(1743):     at org.apache.harmony.luni.net.PlainSocketImpl.read(PlainSocketImpl.java:561)
    02-02 15:57:32.764: WARN/System.err(1743):     at org.apache.harmony.luni.net.SocketInputStream.read(SocketInputStream.java:88)
    02-02 15:57:32.764: WARN/System.err(1743):     at com.order.NetWorkService$TCPListenThread.run(NetWorkService.java:251)
    02-02 15:57:32.764: ERROR/NetWorkService(1743): TCPListenThread readBytes =  inStream.read(pkt, 0, minReadSize) error
      

  2.   

    你自己有没有记录一下发生这种现象的时候,是正在使用socket连接的过程中断掉还是有一段时间没有使用socket的时候断开的,如果是正在使用的时候断了,那就是网络问题,如果是一段时间没有使用断掉了,有可能是socket自己断开的,这种情况可以考虑使用心跳包的保持socket的连接。