-3

java nio を使用して小さなデータを送信できます。

しかし、非常に大きなデータを送信したい場合、ソケット チャネルは正常に機能しませんでした。

message = "very large data"+"\n";
ByteBuffer buf = ByteBuffer.wrap(message.getBytes());
int nbytes = channel.write(buf);

すべてのデータが送信されます。

サーバーからデータを読み取りたいので、BufferedInputStreaReader.readLine(); を使用しています。この場合、エラーは発生せず、送信したデータを取得できません

ありがとうディーパック

4

1 に答える 1

1
write()

Returns:
The number of bytes written, possibly zero 

Write は buf 全体を書き込む保証はありません。それがどれだけ書き込まれたかを確認し、別の書き込みを行う必要があります。(おそらく、再度書き込みできるようになるまで待機 (選択) します。)

おそらく、適切な java.nio チュートリアルも検索する必要があります...より単純な API が必要な場合は、代わりに java.io のブロッキング io を使用してください...

于 2009-05-18T08:11:27.290 に答える