84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
最近在学socket,发现如果发送请求的话 请求的 ip地址和 端口号需要转换成网络字节序。否则会因为 小端 和 大端 而导致解析出问题
但是socket建立后 的正文数据为什么不用针对字节序处理呢 ?
比如说我发的是字符串 众所周知 现在的Unicode 字符集已经不止是一个字节了 这样多个字节就会有字符串问题 socket接受来数据为什么还能正常识别呢?
socket只认识字节这一个单位, 写进去的字节会以同样顺序被另一端读到.
Unicode的编码已经包括字节序了, 比如在一端写UTF16LE, 要在另一端把字节同样按UTF16LE解码. (特例: UTF8的编码单位就是一字节, 没有字节序问题).
如果你用socket发一般数据是要考虑字节序的, 这种考虑一般是序列化协议的一部分.
字节序是针对整数而言。端口号是一个16位整型,所以存在大小端的问题。其他的都没关系
因为TCP/UDP以及其它更底层的网络协议就是那么规定的。socket建立之后,传输的数据相当于你设计的自己的协议,所以想用什么字节序都可以,只要收发方都用同样的字节序。
socket只认识字节这一个单位, 写进去的字节会以同样顺序被另一端读到.
Unicode的编码已经包括字节序了, 比如在一端写UTF16LE, 要在另一端把字节同样按UTF16LE解码. (特例: UTF8的编码单位就是一字节, 没有字节序问题).
如果你用socket发一般数据是要考虑字节序的, 这种考虑一般是序列化协议的一部分.
字节序是针对整数而言。端口号是一个16位整型,所以存在大小端的问题。其他的都没关系
因为TCP/UDP以及其它更底层的网络协议就是那么规定的。socket建立之后,传输的数据相当于你设计的自己的协议,所以想用什么字节序都可以,只要收发方都用同样的字节序。