linux - ソケットのバイトオーダーについていくつか質問があります。
我想大声告诉你
我想大声告诉你 2017-05-31 10:37:36
0
3
835

最近ソケットについて勉強していて、リクエストが送信される場合、リクエストされた IP アドレスとポート番号をネットワーク バイト オーダーに変換する必要があることがわかりました。そうしないと、リトル エンディアンとビッグ エンディアンが原因で解析の問題が発生します

しかし、ソケット作成後のテキスト データをバイト オーダーで処理すべきではないのはなぜでしょうか?

たとえば、私が送信するのは文字列です。ご存知のとおり、現在の Unicode 文字セットは 1 バイト以上です。複数のバイトがある場合、文字列の問題が発生します。なぜソケットはデータを正常に認識できるのでしょうか? ?

我想大声告诉你
我想大声告诉你

全員に返信(3)
为情所困

ソケットはバイト単位のみを認識し、書き込まれたバイトは相手側でも同じ順序で読み取られます。

Unicode エンコードにはすでにバイト順序が含まれています。たとえば、一方の側で UTF16LE を記述した場合、もう一方の側ではバイトを UTF16LE に従ってデコードする必要があります (特殊な場合: UTF8 のエンコード単位は 1 バイトであり、バイトはありません)。順序の問題)。

一般的なデータを送信するためにソケットを使用する場合は、バイト順序を考慮する必要があります。この考慮事項は通常、シリアル化プロトコルの一部です。
いいねを押す +0
大家讲道理

バイトオーダーは整数に対するものです。ポート番号は 16 ビット整数であるため、ビッグエンディアンの問題が発生します。それ以外は関係ありません

いいねを押す +0
滿天的星座

TCP/UDP やその他の下位レベルのネットワーク プロトコルがこのように規定されているためです。ソケットが確立された後、送信されるデータは設計したプロトコルと同等になるため、送信側と受信側の両方が同じバイト順序を使用する限り、任意のバイト順序を使用できます。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!