【初心者】Java質問・相談スレッド112【大歓迎】at TECH
【初心者】Java質問・相談スレッド112【大歓迎】 - 暇つぶし2ch975:デフォルトの名無しさん
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){

長文な上にわかりにくい文章かもしれませんが、
なぜこうなるのか教えてもらえないでしょうか?


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch