社区
Java SE
帖子详情
socket问题
简洁是智慧的灵魂
2010-07-28 12:48:51
我在服务器端建了两个线程,第一个用来接收客户端发来的命令,当接收到update命令时建立第二个线程接收文件,接收完之后返回第一个线程继续接收命令,但是因为刚刚接收完文件,再接收命令时会有EOFException,表示文件读取已经结束无法继续读取,我应该怎么做,两个线程都是通过socket获取stream的,但是我不想在第二个线程中关闭流,因为一关闭流socket也不会关闭
...全文
115
3
打赏
收藏
socket问题
我在服务器端建了两个线程,第一个用来接收客户端发来的命令,当接收到update命令时建立第二个线程接收文件,接收完之后返回第一个线程继续接收命令,但是因为刚刚接收完文件,再接收命令时会有EOFException,表示文件读取已经结束无法继续读取,我应该怎么做,两个线程都是通过socket获取stream的,但是我不想在第二个线程中关闭流,因为一关闭流socket也不会关闭
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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 这个异常的解决可以把缓存设的大一些。
Socket
编程例子
Socket
编程例子
C#的
Socket
实现UDP协议通信
C#的
Socket
实现UDP协议通信 CSharp
Java实现
Socket
长连接和短连接
Java实现
Socket
长连接和短连接,实现原理可参见个人博客
android在wifi下手机与电脑的
socket
通信
代码完整,手机做服务端,电脑做客户端;也可以反过来,电脑做服务端,手机做客户端。修改积分000000000000000000000000000
[转]Can't connect to local MySQL server through
socket
问题
解决
Can’t connect to local MySQL server through
socket
问题
解决 ERROR 2002 (HY000): Can’t connect to local MySQL server through
socket
‘/var/lib/mysql/mysql.sock’ (2) 1、先查看 /etc/rc.d/init.d/mysqld status
Java SE
62,629
社区成员
307,262
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章