私はこのプロジェクトで、C++。サードパーティ製のlibを使用してTCPクライアントサーバーアプリケーションを開発中です。recv()apiのパッド付きデータ
ここで、クライアントサーバー間の交換は、プロトコルの形式をよく定義します。クライアントは、解析のために送信するパケットを受信します。解析マネージャは、解析アクティビティを処理します。
私は次の疑いを持っています ネットワークからクライアントにデータが到着すると、OSはアプリケーションがrecv()関数を呼び出すまでそのデータをバッファします。
2つのメッセージmsg1とmsg2がバッファに到着すると、recvの呼び出しはmsg1 + msg2を返します。これにより、解析作業が失敗する可能性があります。
私の質問 1.上記の仮定が正しいかどうか? 2.上記の保証が正しい場合、どのようにしてこの問題を解決できますか。
、plzは私たちの溶液を得、それを読むことができるようになりますrecv()APIを使用して受信します。また、クライアントは常に完全な応答を得るか、ある種類の応答の半分を取得し、残りの半分を別の種類(たとえば、recv()API用に定義したバッファに依存します) – Revathy
半分のパケットを与えることは完全に可能です.TCPは、単一のデータストリームを転送することを前提としています。そのデータの構造は、プロトコル(レコード構造、長さフィールドまたはエスケープ文字)から出てくる必要があります。どのようなプロトコルを実装していますか? –
TCP/IPプロトコル – Revathy