-1

経由でメッセージを送信したいjava.net.Socket

メッセージは次のとおりです。001C020000C0154C000404850D9583CC00000004560B00E42080004C

私のアプリケーションでは、このメッセージを one 経由で送信する必要がありますTCP packet

しかし、Wireshark で何が起きているかを確認すると、メッセージが再構成された 2 つの SSL セグメントに分割されていることがわかります。

  1. 00
  2. 1C020000C0154C000404850D9583CC00000004560B00E42080004C

この動作を抑制するにはどうすればよいですか?

私のコードは次のとおりです。

OutputStream os = m_sslsocket.getOutputStream();
os.flush();
write(hex2Byte("001C020000C0154C000404850D9583CC00000004560B00E42080004C");
os.flush();

ここでhex2Byte、16 進数の String を bytearray に変換します。

編集:コメントありがとうございます。

いずれにせよ、WireShark 経由で観察するときのプロトコル スタックは次のようになります。 ここに画像の説明を入力

ご覧のとおり、2 つの SSL セグメントがあり、1 つは 00 で、もう 1 つは残りです。セグメントが 1 つだけになるように、どのように抑制しますか?

上記は、出力ストリームへの書き込みの結果です。

(赤色は心配しないでください。これは、ネットワーク デバイスへの IP チェックサム オフロードによるものです。)

4

1 に答える 1

2

私のアプリケーションでは、このメッセージを1つのTCPパケットで送信する必要があります。

運が悪いと、SSLの有無にかかわらず、TCPでこれを確実に実行することはできません。あなたの期待を調整します。これはバイトストリームプロトコルです。

于 2012-08-21T15:12:34.617 に答える