我在服务器端建了两个线程,第一个用来接收客户端发来的命令,当接收到update命令时建立第二个线程接收文件,接收完之后返回第一个线程继续接收命令,但是因为刚刚接收完文件,再接收命令时会有EOFException,表示文件读取已经结束无法继续读取,我应该怎么做,两个线程都是通过socket获取stream的,但是我不想在第二个线程中关闭流,因为一关闭流socket也不会关闭

解决方案 »

  1.   

    两个线程都用自己的 stream来获取数据。
    而且按你描述的这些内容来看, 接收到 update之后 new thread2 , thread2 是用来接收文件的,但是 接收完之后返回第一个线程继续接收命令 这样的描述感觉 新建一个thread 没啥意思了哦, 线程就是为了尽量让多个任务同时执行(cpu及操作系统等原因不可能同时执行),但是按照你的描述,第二个线程建立之后 接收文件 这个操作结束之后才会继续执行thread1,这样的话为什么要用到两个线程来做这个呢?EOFException 这个异常的解决可以把缓存设的大一些。
      

  2.   

    楼上说的是。
    接收到命令之后,会把流交给另外的方法来执行读取,服务端必须等到流读取结束,才会接收下一个命令,这样的话,就是串行的,没有必要另开线程。
    楼主可以在收到update命令后,另开端口,在新端口接收文件流,接收结束则关闭,同时线程1仍然可以接收其他命令。
      

  3.   

    同意楼上两位。
    为何不用mina框架呢?很多东西都是框架处理,使用非常简单,效率非常高。