Java サーバーとネイティブの Unix および Windows クライアントの間でソケット データを共有したいので、プラットフォームに依存しないソケット通信がどのように機能するかを理解しようとしています。ソケットは設計上プラットフォームに依存しませんが、データ表現はマシンに関連しているため、あるシステムでサポートされているデータ形式が別のシステムでもサポートされている必要はないため、TCP データが実際のデータ形式を抽象化する場合に有利です。 .
たとえば、C++ クライアント プログラムから Java サーバーに unsigned int 値を送信する場合、この数値を負の整数として解釈する必要があることをサーバーに伝える必要があります。この種の抽象化はどのように機能しますか? 私の限られた知識では、数値をテキストとして送信し、受信者に受信したデータの種類を伝える何らかの一意の文字シーケンスを追加するだけですが、これが実行可能なアプローチであるかどうかはわかりません.
もう少し具体的に言うと、次の内容を含むメッセージを送信したいと思います。
- メッセージの冒頭で、受信者が後続のデータをどう処理するかを正確に知ることができるように、ある種の短い信号またはコマンドを送信します。
- 次に、任意の長さのテキスト コンテンツ。
- 数字が続きます。これはテキストでもかまいませんが、個別に解釈する必要があります。
- 最後に、メッセージがここで終了することをサーバーに伝えるマークかもしれません。
TCP はデータをバイト チャンクで処理します。これは、UTF-8 でエンコードされた char を 1 バイトで記述すると、クライアント マシンが Java のビッグ エンディアン バイト オーダーを考慮に入れている場合、この char は異なるマシンでも同じように解釈されるということですか? ご意見とご協力ありがとうございます。