これが私のコードの抜粋です:
OutputStream out = this.socket.getOutputStream();
out.write(fourBytes);
out.write(someBytes);
out.flush();
最初のパッケージの長さはわずか 4 バイトですが、これは 2 つのパッケージで送信されます。バイト配列を連結して一緒に送信する以外の方法はありますか?
私はすでに試しsetTcpNoDelay(false)
ました。
もちろん。を使用しBufferedOutputStream
ます。:-P
はsetTcpNoDelay
、Java がパケットを送信する方法ではなく、OS がパケットを送信する方法を変更します。後者を変更する唯一の方法は、上で提案したように、出力をバッファリングすることです。
ところで、これはデータが実際に分割されるパケット数には影響しません。繰り返しますが、それはOS次第であり、受信側で指定されたウィンドウにも依存します。したがって、パケットを使用してデータを区切ることはできません。
バッファリングされた出力ストリームでラップする
Nagleの無効化はsetTcpNoDelay(true)