6

WebSocket プロトコルに基づいてサーバーとクライアントを作成しています。

サーバーは Python と Twisted を使用して作成されます。

現在、サーバーからクライアントにバイナリデータを送信して戻すことができますが、唯一の問題は、一部の情報源によると、ブラウザから送信されたバイナリデータのエンディアンがマシンのエンディアンに基づいていることです。確認したいのですが、本当ですか?

それが本当なら、どうにかしてクライアントのエンディアンを確認し、彼のエンディアンを使用してデータを読み書きする必要がありますか? クライアントのエンディアンを確認する最良の方法は何ですか?クライアントから送信するだけです

var view_buffer = new UInt8Array(new ArrayBuffer(1));
view_buffer[0] = 1;

1 または 128 を返すかどうかをサーバーで確認しますか?

4

5 に答える 5

9

RFC 6455によると:

マルチバイト長の量は、ネットワーク バイト オーダーで表されます。

ネットワーク バイト オーダーはビッグ エンディアンです。サーバーとクライアントの両方が、ネイティブの順序に関係なく、このバイト順序を使用する必要があります。

Python では、structモジュールを使用して、指定子で適切なバイト順を確保でき'>'ます。Javascriptでどのように行われるかわかりません。

于 2013-01-31T21:31:04.657 に答える
1

エンディアンは、複数のバイトで構成されるデータ型にのみ関連します。uint8 エンディアンの配列を使用しているため、問題はありません。

于 2013-01-31T21:28:27.347 に答える