读数据包的问题

woowindice 2009-01-15 10:13:16
java代码如下:
int len = in.readInt();
byte[] b = new byte[len - 4];
in.read(b);

协议里前4个字节表示一个完整数据包的大小
如果用以上代码,能保证in.read(b)以后,读完整个数据包吗?
我记得tcp协议是流式的,数据可能不是一次性达到的,需要分批读取,然后自己组合。
请高手帮忙解释一下!谢谢!
...全文
39 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
临远 2009-01-17
  • 打赏
  • 举报
回复
你不能指望一个read就可以得到所有包数据,因为tcp很可能就把数据截断了,需要一个循环,在得到指定长度的数据之后就进行分析处理。

62,614

社区成员

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

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