2009-05-19 21 views
0

ソケットのDataInputStreamを使用して非常に大きなデータを読み取る方法データが文字列形式であり、長さが1,00,000文字を超える場合。ソケットの巨大なデータを読み取ってソケットチャネルに書き込む方法

JavaでSocketChannelを使用してその大きなデータを書き込む方法もありますか?

+1

Deepak、より具体的に質問してください。これまでに何を試しましたか?コードを書いていれば、何がうまくいかないのですか? –

+0

大きなデータの場合はread()を使用します。次に、データ長を実際に100000文字バイトにします。私の読み取り方法は、その時点で最大40000バイトまで読み取ることができます。 バイト[] b =新しいバイト[100000] DataInputStream.read(b);System.out.println(新しい文字列(b)); – Deepak

答えて

1

問題は、データがチャンクに到着していることです。パケットサイズがそれを制限しているか、DataInputStreamの内部バッファーがわずか40kです。私は知らないが、問題ではない。どちらの方法でも、1000000バイトすべてが一度に届くことはありません。だからあなたはそれを期待するためにあなたのプログラムを書き直さなければならない。あなたが受け取った小さなチャンクを読んで、別のbyte [1000000]変数に格納する必要があります(最後のバイトインデックスの位置を記録します)。ソケットの読み込みが終了するまでループを繰り返してください。次に、内部変数で作業することができます。

+0

こんにちはChris、 データ全体がまだ受信されていないにもかかわらず、読み込みデータが0になっている状況があります。だからこの問題から克服する方法。 いくつかの例を挙げることができますか? – Deepak

関連する問題