2011-12-07 3 views
0

私はTCP入力ストリームをUPDデータグラムバイト配列に変換する方法は?

outputStream.write(string.getBytes(Charset.forName("UTF-8"))); 

を使用したスト​​リームに変換し、TCPソケットを介して送信し、サーバーバイト配列にこれらのストリームを変換し、UDPソケットに送信するためのいくつかの文字列を持っています。問題は、オリジナルの文字列サイズが変化し、バイト配列サイズを定義したくないためです。後で行う最も最適な方法は何ですか?

+0

サイズとバイトを同じパケットに設定します。 –

答えて

0

バイト配列をUDPソケットに送信するときは、最初のバイトを送信する文字列の長さにします。欠点は、0〜255バイトしか送信できないことです。私はJavaについてはわかりませんが、長さの最下位8ビットを取得して最初のバイトとして送信し、上位8ビットを2番目のバイトとして送信すると、0〜65535バイトを送信できます。

もちろん、UDPソケットから読み込む他のプログラムは、最初の1〜2バイトを読み込み、その整数を構成する必要があります。次に、長さを認識し、正確なバイト数を読み取ることができます。

+0

UDPパケットは自己完結型なので、埋め込まれた長さの値は必要ありません。パケットサイズ*は文字列の長さです。私は、代わりに、TCP接続を介して文字列の長さを送信するので、受信者はUDPで送信するバイト数を知っています。 –