Java socket I/O流问题

Vurteon 2013-08-17 09:27:09
如题,如果服务器端处理时间多于用户发送请求的间隔时间,那么在下一次读取的时候,就不会读取到预料的字节流,比如每次传输的都是xml字节流,这样就会出现严重的问题不是吗?
有没有什么比较好的解决办法,可否回执一个状态码,来标识服务器时候准备接受数据?求解答、
...全文
308 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
k_c_u_f 2013-08-18
  • 打赏
  • 举报
回复
引用 3 楼 Vurteon 的回复:
[quote=引用 2 楼 k_c_u_f 的回复:] 用TimerTask,规定客户端一定的时间间隔才能发送,比如10秒钟才能发一次,服务器端就有充足的时间去处理了
但是这样不是个好的办法啊,由于服务器处理时间的不确定性,有时候是3秒,有时候是0.3秒,所以,如果规定一个时间,就会对资源有严重的浪费。还有没有什么较好的解决办法?[/quote] 服务器处理完了给客户端发一个消息,客户端收到消息才能发送下一个数据
Vurteon 2013-08-18
  • 打赏
  • 举报
回复
引用 5 楼 fangmingshijie 的回复:
你说的是应答式的交互。
即使通讯,附带一个主页,主要是考虑到主页响应时间远远大于即时通讯,所以才有了这个问题
  • 打赏
  • 举报
回复
你说的是应答式的交互。
Vurteon 2013-08-18
  • 打赏
  • 举报
回复
刚刚想到一个解决办法,在这个连接上另起一个线程,用来维护一个队列,每次接受后传入队列,然后继续接受,连接的主线程来执行实际的操作,从而形成了一个良好的结构,队列可以考虑采用优先级队列。
Vurteon 2013-08-18
  • 打赏
  • 举报
回复
引用 2 楼 k_c_u_f 的回复:
用TimerTask,规定客户端一定的时间间隔才能发送,比如10秒钟才能发一次,服务器端就有充足的时间去处理了
但是这样不是个好的办法啊,由于服务器处理时间的不确定性,有时候是3秒,有时候是0.3秒,所以,如果规定一个时间,就会对资源有严重的浪费。还有没有什么较好的解决办法?
k_c_u_f 2013-08-17
  • 打赏
  • 举报
回复
用TimerTask,规定客户端一定的时间间隔才能发送,比如10秒钟才能发一次,服务器端就有充足的时间去处理了
Vurteon 2013-08-17
  • 打赏
  • 举报
回复
补充一点就是这个问题是对于一个单独的已经和客户端连接的socket对象的I/O

62,621

社区成员

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

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