Raf*_*ski 4 javascript python endianness websocket
我正在编写基于WebSocket协议的服务器和客户端.
服务器是使用Python和Twisted制作的.
现在我可以将二进制数据从服务器发送到客户端并返回,唯一的问题是,根据一些消息来源,浏览器发送的二进制数据的字节顺序是基于机器字节顺序的.我想确定,这是真的吗?
如果这是真的,那么我应该以某种方式检查端点客户端有什么,并使用他的字节序读取/向他发送数据?检查客户端字节顺序的最佳方法是什么,只需从客户端发送即可
var view_buffer = new UInt8Array(new ArrayBuffer(1));
view_buffer[0] = 1;
Run Code Online (Sandbox Code Playgroud)
这个数据,并检查服务器是否返回1或128?
要检查字节顺序,您需要发送至少一个两字节值。
您不能仅通过发送单个字节来进行检查,因为此时已经为您整理好了位级字节顺序。
因此,字节序仅对字节交换(如果需要)以及您尝试使用特定于字节序的规则打包各个位(例如当您在 C 中使用位字段时)有意义。
如果您的问题与 WebSocket 有效负载中携带的您自己的消息有关,通常的过程是您自己选择字节顺序,然后执行您必须执行的任何打包或解包操作,以将本机字节顺序转换为您首选的字节顺序。我所知道的大多数协议都使用大端字节序,也称为“网络顺序”。
因此,如果您有一个 16 位值,请自行使用移位和按位运算符将其转换为两个 8 位字节,然后先发送顶部字节,然后发送第二个字节。在服务器端,反转该过程。大多数服务器端语言都可以很容易地将值从网络顺序转换为本机字节顺序。
| 归档时间: |
|
| 查看次数: |
2540 次 |
| 最近记录: |