socket问题

简洁是智慧的灵魂 2010-07-28 12:48:51
我在服务器端建了两个线程,第一个用来接收客户端发来的命令,当接收到update命令时建立第二个线程接收文件,接收完之后返回第一个线程继续接收命令,但是因为刚刚接收完文件,再接收命令时会有EOFException,表示文件读取已经结束无法继续读取,我应该怎么做,两个线程都是通过socket获取stream的,但是我不想在第二个线程中关闭流,因为一关闭流socket也不会关闭
...全文
115 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xieruilin 2010-07-28
  • 打赏
  • 举报
回复
同意楼上两位。
为何不用mina框架呢?很多东西都是框架处理,使用非常简单,效率非常高。
DAVE_LUO 2010-07-28
  • 打赏
  • 举报
回复
楼上说的是。
接收到命令之后,会把流交给另外的方法来执行读取,服务端必须等到流读取结束,才会接收下一个命令,这样的话,就是串行的,没有必要另开线程。
楼主可以在收到update命令后,另开端口,在新端口接收文件流,接收结束则关闭,同时线程1仍然可以接收其他命令。
hardycheng 2010-07-28
  • 打赏
  • 举报
回复
两个线程都用自己的 stream来获取数据。
而且按你描述的这些内容来看, 接收到 update之后 new thread2 , thread2 是用来接收文件的,

但是 接收完之后返回第一个线程继续接收命令 这样的描述感觉 新建一个thread 没啥意思了哦, 线程就是为了尽量让多个任务同时执行(cpu及操作系统等原因不可能同时执行),但是按照你的描述,第二个线程建立之后 接收文件 这个操作结束之后才会继续执行thread1,这样的话为什么要用到两个线程来做这个呢?

EOFException 这个异常的解决可以把缓存设的大一些。

62,629

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧