サイズが必要な場合は、私はそれを得るには二つの方法を参照してください。
- を暗号化したデータと一緒に明示的に送信します。
- サーバー側のすべてのデータを完全に受信するまでバッファリングします。受信したバイト数を記録します。最初で
は、あなたがこのような何かを試みることができる:
<number of bytes to follow><separator symbol><message data>
第二には、あなたが適切にメッセージの終わりを検出することができることが必要です。これを特定のメッセージ終了シーケンスで検出することができます。しかし、メッセージ内にそのようなシーケンスがエスケープする必要があります。 C/C++/Java/C#で文字がどのようにエスケープされるかに似た何か...私にとって最も簡単な最初のアプローチを選んでいないのなら、これはおそらく以下の亜種に対して好むでしょう...
メッセージが完了した後で代替手段が接続を閉じる可能性があります。その後、しかし、あなたは...それが壊れてしまった場合は、後者の場合には、あなたが解読しようとしてはなりませんので接続は、定期的に閉じたりしているかどうかを検出する必要が
あなたも、両方のアプローチを組み合わせかもしれません:
<message start sequence>
<number of bytes to follow>
<separator symbol>
<encrypted data>
<message end sequence>
メッセージ開始シーケンスとメッセージ終了シーケンスの両方をエスケープする必要があります。暗号化されたデータ内のメッセージ開始シーケンス、またはバイト数が読み込まれる前にメッセージ終了シーケンスが検出された場合は、サーバー側で何かが間違っていたことがわかります...
ドキュメントは何を表していますか?どのようなコードを使用していますか? – tadman
暗号化されたデータを送信する場合は、長さも送信する必要があります。 (とにかくソケット通信でこれを行う必要があります。そうしないと、受信者はパケットがいつ完了するかを知らないでしょう) –
暗号化するデータの埋め込みを実装するだけで済みます。これは、解読後に元のストリームの長さを回復することを可能にする。詳細については、https://en.wikipedia.org/wiki/Padding_(cryptography)を参照してください。 – Serge