08/03/01 14:50:50
勉強のためにファイル転送のプログラムを作っているのですが、
いまいち上手くいきません。流れとしては、
①(送り手) FileChannel(sourceChannel)でファイルを読み込む
②(送り手) SocketChannel(destinationChannel)で相手に送る
③(受け手) SocketChannel(sourceChannel)で受け取る
④(受け手) FileChannel(destinationChannel)でファイルに書き込む
送り手
while(destinationChannel.isConnected()){
buffer.clear();
if(sourceChannel.read(buffer) < 0)
break;
buffer.flip();
destinationChannel.write(buffer);
}
受け手
while(sourceChannel.isConnected()){
buffer.clear();
if(sourceChannel.read(buffer) < 0)
break;
buffer.flip();
destinationChannel.write(buffer);
}
bufferはByteBuffer型になっています。
これを実行すると、送り手はエラーもなく正常に終了しているのですが、受け手で
「java.io.IOException: 既存の接続はリモート ホストに強制的に切断されました。」というエラーが出てきます。
エラーが出た場所 => if(sourceChannel.read(buffer) < 0){
長文な上にわかりにくい文章かもしれませんが、
なぜこうなるのか教えてもらえないでしょうか?