私のアプリケーションは、ソケットの小さなメッセージを使用してネットワーク経由で送信します。各メッセージは約 200 バイトのデータです。データが 1 フレームではなく 2 フレームで送信されるようにしたいと思います。私の質問は
- それを行う方法、つまり TCP にバッファを 2 つのフレームに自動的に分割させる方法はありますか?
- バッファを 2 つの別々の書き込みで送信した場合、同じ結果が得られますか?
Linux と C を使用しています。
それを行う方法、つまり TCP にバッファを 2 つのフレームに自動的に分割させる方法はありますか?
TCP はストリーム通信プロトコルであり、すべてのデータは連続しています。データを区切り記号で分割する必要があります。
たとえば、HTTP プロトコルでは、分割された各リクエストは 2 つに分割されます\n
。
バッファを 2 つの別々の書き込みで送信した場合、同じ結果が得られますか?
いいえ、それらは 1 つの連続したデータ ストリームとして受信されます。フレームは無意味です。
注: アプリケーションでデータ TCP を受信する前に、パケットは分離されますが、OS はそれらを収集して再構築します。このプロセスはアプリケーションから透過的です。
ここでは、考慮できるいくつかの事項を示します。