java socket 拆包与组包

suwanjun881011 2012-11-07 06:17:07
我写了一个java 服务端。从一个客户端传输1,0,1 到另外一个客户端一秒30次。server 端打印出来次数是对的。但是到另外一个客户端的时候发现发生粘包。次数也明显少了。求大侠帮忙。。
...全文
1524 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
suwanjun881011 2012-12-04
  • 打赏
  • 举报
回复
项目结束了。。。问题也解决了。
suwanjun881011 2012-12-04
  • 打赏
  • 举报
回复
beiouwolf 2012-11-08
  • 打赏
  • 举报
回复
不知道你传送的数据要求多长的,比较简单的情况下,假设你只传送int的话,不需要去转字符串 发送到时候,直接write(int),读取的时候如果是按照byte[]形式读取的话,每次就读取4byte 记得objectinpustream有readInt() 至于TCP数据包做法,GOOGLE吧,一句二句说不清楚
普凡 2012-11-08
  • 打赏
  • 举报
回复
引用 4 楼 peng_hao1988 的回复:
发送频率不算高呀,你直接发送字符串??? 建议将用对象流,最好把要发送的东西封装在一个对象中,并序列化后发送。
觉得这个可以试试
桃园闲人 2012-11-08
  • 打赏
  • 举报
回复
发送频率不算高呀,你直接发送字符串??? 建议将用对象流,最好把要发送的东西封装在一个对象中,并序列化后发送。
suwanjun881011 2012-11-08
  • 打赏
  • 举报
回复
引用 2 楼 beiouwolf 的回复:
你所谓的粘包是神马东西?读取长度问题? 你的传输没有长度规定的吗? 那至少得做成包头包体的数据包吧
能给个例子么? 谢谢
beiouwolf 2012-11-08
  • 打赏
  • 举报
回复
你所谓的粘包是神马东西?读取长度问题? 你的传输没有长度规定的吗? 那至少得做成包头包体的数据包吧
桃园闲人 2012-11-08
  • 打赏
  • 举报
回复
引用 7 楼 suwanjun881011 的回复:
引用 4 楼 peng_hao1988 的回复:发送频率不算高呀,你直接发送字符串??? 建议将用对象流,最好把要发送的东西封装在一个对象中,并序列化后发送。 发送的是字符串
直接用对象流吧,把字符串对象发送。
beiouwolf 2012-11-08
  • 打赏
  • 举报
回复
字符串就按字节来呗 比如定长8字节表示一个数据 发送的时候以8字节为单位发送,接收到时候同样以8字节接收,数字可以左补0 比如需要发送三个数字 4,15,200 发送到时候应该是 000000040000001500000200 读取的时候8字节读一次
suwanjun881011 2012-11-08
  • 打赏
  • 举报
回复
引用 6 楼 beiouwolf 的回复:
不知道你传送的数据要求多长的,比较简单的情况下,假设你只传送int的话,不需要去转字符串 发送到时候,直接write(int),读取的时候如果是按照byte[]形式读取的话,每次就读取4byte 记得objectinpustream有readInt() 至于TCP数据包做法,GOOGLE吧,一句二句说不清楚
发送的是字符串。google现在已经不好用了。。。
suwanjun881011 2012-11-08
  • 打赏
  • 举报
回复
引用 4 楼 peng_hao1988 的回复:
发送频率不算高呀,你直接发送字符串??? 建议将用对象流,最好把要发送的东西封装在一个对象中,并序列化后发送。
发送的是字符串
brightyq 2012-11-07
  • 打赏
  • 举报
回复
发送次数有点快。 这样的话,最好用异步接收的方式

62,614

社区成员

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

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