1

さまざまなプロトコル (TCP プッシュ/プル、UDP プッシュ/プル/マルチキャスト) を管理できる単純なビデオ ストリーミング (実際には画像ストリーミング) サーバーを作成したいと考えています。

TCP プッシュ/プルをSocketServer.TCPServerクラスで動作させ、ThreadinMixIn接続された各クライアントを異なるスレッドで処理することができました。

しかし、UDP プロトコルに取り組んでいるので、ThreadinMixIn がhandle()クライアント クエリごとの呼び出しごとにスレッドを作成することに気付きました (UDP には「接続」などがないため)。

問題は、すべてのクライアントに対して、同じクライアントによる一連のクエリを処理する必要があることです。どうすればそれを管理できますか?

これを処理できる唯一の方法は、(クライアントアドレス、処理スレッド)のリストを取得し、各クエリを一致するスレッドに送信することです(または、クライアントがまだスレッドを送信していない場合は新しいクエリを作成します)。それを行う簡単な方法はありますか?

ありがとう !

PS:ソケットの仕組みを理解することを目的とした学校の科目であるため、これには外部または「高レベル」のライブラリを使用できません。

4

1 に答える 1

-1

Twistedを見てください。これにより、アプリケーションからスレッドディスパッチを実行する必要がなくなります。パケットを処理するには、特定のセッションにパケットを一致させる必要がありますが、これは難しくありません(クライアントごとにポートを使用し、ポートに基づいてディスパッチするか、セッション内のパケットが常に同じアドレスから送信されるようにする必要があります。ピアアドレスを使用するか、SIPなどのこの問題を解決する既存のプロトコルの1つを使用します。

于 2012-12-06T13:31:32.350 に答える