近日一个项目中需要信息交互,服务端用JAVA,客户端分为手机端(android)及桌面端(C#)。
问题描述:1、在手机断网的情况下,手机端socket状态会发生什么样的变化?应该如何处理?
                 2、手机断网后,readLine()会抛出异常,是否应该先调用socke的shutdownInput方法关闭输入流?然后再判断网络正常后,打开输入流?
                3、是否客户端断网(假设服务器端一直是稳定的)后,socket就失效,必须要重新new socket()?
              --------------------------------------
               移动开发学习第一帖,三个问题比较迷惑,敬待各位大神赐教!

解决方案 »

  1.   

    1, 断网时在发送数据过程中吗?不是的话,没有任何变化,发送中则会抛出IO异常来。
    2, 你是指服务端readLine()抛出异常吧?继续循环BufferedReaderreadLine()等待监听客户端的连接
    3, 无需new socket(),继续复用即可
      

  2.   

    实际情况非常复杂,当初真机调试真的头大
    我是弄了个变量计发送失败次数,超过15次,就close socket,再关闭receive进程
    不必重新new socket,但必须close掉重新bind
      

  3.   


    -----------
    1、抛出异常之后,socket.connect()?
    2、判断到网络打开后,继续开启读取线程,运行readLine()?
    3、复用在技术实现上是指?代码上如何体现(伪代码就好)