tcp粘包包头为什么定义4字节存储消息体长度

weixin_38066537 2019-09-20 10:10:06
```
package main

import (
"encoding/binary"
"fmt"
)

func main() {
b:=make([]byte,4)
binary.BigEndian.PutUint32(b,510)
fmt.Println(b)
fmt.Println(binary.BigEndian.Uint32(b))
}
```
运行结果
```
[0 0 1 254]
510
```

经常看到tcp粘包问题的解决方案,就是在包头定义包体的长度,为什么是4字节,这个运算结果是怎么算的,那个大佬解释下,或推荐查询相关资料
...全文
119 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38072696 2019-09-20
  • 打赏
  • 举报
回复
不必纠结几个字节,5个字节也是可以的。一般是做包头+len+data+crc 希望对您有帮助
weixin_38073649 2019-09-20
  • 打赏
  • 举报
回复
+3
weixin_38076382 2019-09-20
  • 打赏
  • 举报
回复
四字節一個int ,足夠大多數的運用場景了。此外端序也要一致。
weixin_38079250 2019-09-20
  • 打赏
  • 举报
回复
[https://www.toutiao.com/i6732988204787433991/](https://www.toutiao.com/i6732988204787433991/)

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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