关于 socket 的字节序 有点疑问

发布于 2022-09-04 23:56:11 字数 206 浏览 13 评论 0

最近在学socket,发现如果发送请求的话 请求的 ip地址和 端口号需要转换成网络字节序。否则会因为 小端 和 大端 而导致解析出问题

但是socket建立后 的正文数据为什么不用针对字节序处理呢 ?

比如说我发的是字符串 众所周知 现在的Unicode 字符集已经不止是一个字节了 这样多个字节就会有字符串问题 socket接受来数据为什么还能正常识别呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

凝望流年 2022-09-11 23:56:11

socket只认识字节这一个单位, 写进去的字节会以同样顺序被另一端读到.

Unicode的编码已经包括字节序了, 比如在一端写UTF16LE, 要在另一端把字节同样按UTF16LE解码. (特例: UTF8的编码单位就是一字节, 没有字节序问题).

如果你用socket发一般数据是要考虑字节序的, 这种考虑一般是序列化协议的一部分.

街角卖回忆 2022-09-11 23:56:11

字节序是针对整数而言。端口号是一个16位整型,所以存在大小端的问题。其他的都没关系

浅笑依然 2022-09-11 23:56:11

因为TCP/UDP以及其它更底层的网络协议就是那么规定的。socket建立之后,传输的数据相当于你设计的自己的协议,所以想用什么字节序都可以,只要收发方都用同样的字节序。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文