0

ソケット経由でファイル (必ずしも txt ファイルではない) を送信する際に問題があります。サーバー、クライアントの 2 つのクラスがあります。ソケット出力ストリームから読み取り、バイトをファイルに書き込みたい場合、動作しているように見えますが、ファイルを開くと、何もありません(サイズ= 0 kbを示す破損)。また、ソケットを介してすべての種類のファイルを転送したいです。apache commons netを使用したくありません。ここに私のコードサーバークラスがあります

FileOutputStream toFile1 = new FileOutputStream(f);             
BufferedOutputStream toFile= new BufferedOutputStream(toFile1);
BufferedInputStream bis=new BufferedInputStream(incoming.getInputStream());
byte[]buffer=new byte[2048];
int bytesRead=0;



while((bytesRead = bis.read(buffer)) >= 0)
{   
    toFile.write(buffer, 0, bytesRead);

}

toFile.close();
toFile1.close();
bis.close();
out.println("226 Connection Closed");
out.flush();
                  }                  

クライアントクラス

 BufferedOutputStream output = new BufferedOutputStream(socket.getOutputStream());
 byte[] buffer = new byte[60*2024];
 int bytesRead = 0;
 while ((bytesRead = input.read(buffer,0,60*1024)) != -1) {
        output.write(buffer, 0, bytesRead);
 }
4

1 に答える 1

0

そのコードで発生する可能性がある唯一の方法は、長さゼロのファイルを送信している場合、または既に EOF に配置されているファイル入力ストリームから読み取っている場合、または後で間違ったファイルを見ている場合です。

于 2013-01-31T23:28:11.843 に答える