最近在学socket,发现如果发送请求的话 请求的 ip地址和 端口号需要转换成网络字节序。否则会因为 小端 和 大端 而导致解析出问题
但是socket建立后 的正文数据为什么不用针对字节序处理呢 ?
比如说我发的是字符串 众所周知 现在的Unicode 字符集已经不止是一个字节了 这样多个字节就会有字符串问题 socket接受来数据为什么还能正常识别呢?
最近在学socket,发现如果发送请求的话 请求的 ip地址和 端口号需要转换成网络字节序。否则会因为 小端 和 大端 而导致解析出问题
但是socket建立后 的正文数据为什么不用针对字节序处理呢 ?
比如说我发的是字符串 众所周知 现在的Unicode 字符集已经不止是一个字节了 这样多个字节就会有字符串问题 socket接受来数据为什么还能正常识别呢?
7 回答5.3k 阅读
3 回答2k 阅读✓ 已解决
4 回答4k 阅读
2 回答3.9k 阅读✓ 已解决
2 回答5.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
socket只认识字节这一个单位, 写进去的字节会以同样顺序被另一端读到.
Unicode的编码已经包括字节序了, 比如在一端写UTF16LE, 要在另一端把字节同样按UTF16LE解码. (特例: UTF8的编码单位就是一字节, 没有字节序问题).
如果你用socket发一般数据是要考虑字节序的, 这种考虑一般是序列化协议的一部分.