を使用して文字列を OutputStream に書き込もうとしています
public SSLSocket mClient;
private BufferedOutputStream mOutputStream;
....
mOutputStream = new BufferedOutputStream( mClient.getOutputStream() );
public synchronized void WriteString( String asciiString )
{
mOutputStream.write( asciiString.getBytes() );
mOutputStream.write( 0 );
mOutputStream.flush();
}
....
WriteString( "BASEL ..." );
このメソッドを使用して別の文字列を正常に送信し、(ストリームを介して受信したメッセージに応答して) 上記のメッセージを送信しようとしました。
この呼び出しでは、"B" が書き込まれた直後に書き込み操作によってバッファーがフラッシュされ、その結果、ストリームを介して 2 つのパケットが送信されます。1 つ目は 1 文字です。2 番目には残りの文字列が含まれます。サーバーが最近更新されるまで、これは Linux で正しく機能していました。
OutputStream または BufferedOutputStream に、write() をアトミック操作として強制的に処理させたり、flush() まで送信させないようにする方法はありますか?
私も試してみました
private DataOutputStream mOutputStream;
mOutputStream.writeBytes(asciiString);
mOutputStream.writeByte(0);
mOutputStream.flush();
同じ結果で。