動的バッファ サイズをソケット ストリームに送信する必要があります。正しく動作しますが、サイズが より大きい複数のバッファを送信しようとすると
int my_buffer_size =18 * 1024
; (これは参考値です)
エラーが発生します(一部の書き込みの場合):
Java.net.SocketException: Broken pipe
at java.net.SocketOutputStream.socketWrite0(Native Method)
私のコードは非常に単純です。たとえば、大きなファイルを送信したい場合は、ファイルストリームを読み取ります
byte[] bs = new byte[my_buffer_size];
while (... ){
fileInputStream.read(bs);
byte[] myBufferToSend = new byte[sizeBuffer];
DataOutputStream out = new DataOutputStream(cclient.getoutputStream());
out.writeInt(myBufferToSend.length);
out.write(myBufferToSend);
out.flush();
}
(ファイルは単なるテストであり、バッファサイズを可変にすることができます)
SendBufferSize は 146988 です。
壊れたパイプエラーを修正する方法はありますか? 私は周りを読みましたが、実際には問題を解決しませんでした。
ありがとうございました
私は従来の ServerSocket serverSocket を使用しています。およびソケット cclient