2012-03-28 6 views
0

私は単一のソケットを必要とするが、異なるスレッドからデータを送信し、どのスレッドがデータを送信したのかを区別する機能をC++で作成しています彼らは異なるアプリケーションを持っているので。基本的に論理的なデータストリームは、単一のソケット接続を使用します。パケットのサーバー側を区別する方法を見つけるのが難しいです。私が考えることができる最高ののは、どのパケットがそれを送信したかを示す数バイトの各パケットを開始することです。これを行うより良い方法はありますか?複数の論理データストリームを持つ単一ソケット接続(パケットを区別する)

How to use single port for multiple logical data streams (Winsock)?と似ていますが、私はパケットを差別化することに固執しています。

答えて

0

各タスクに一意のIDを関連付け、ネットワーキングを処理する単一のスレッドを作成し、パケットにタスクIDを追加することをお勧めします。

受信側では同じことを行います.1つのスレッドがパケットを読み取り、task-idに従ってコンテンツを配信します。

0

サーバが知っている固定長ではないパケットがある場合は、パケットの開始または終了の指示も必要です。

関連する問題