解决方案 »

  1.   

    主要是Socket生命周期控制问题吧,个人观点虽然你的不是长连接,但也可以把Socket实现于Service中,通过线程控制Socket生命周期。
      

  2.   

    原因找到了,在服务端,每次接收请求时创建了一个新的线程:
    new ServerSocketTODO(sc,path).start(); //用于接收请求的文件路径,以及将文件进行返回
    如果这么写,那么线程被认为是可以执行的,但是却不是立即执行,这个时候客户端认为没有立即执行,那么就没有返回值,所以就直接结束了.
    比如说,这么写:
    new ServerSocketTODO(sc,path).run();
    直接调用其方法,让它马上执行,那么客户端马上就能收到返回的文件流