2010-12-07 9 views
1

私は、複数のクライアント要求を受け取り、その応答をUDPパケット(ポート53)で送信できるマルチスレッドサーバーをPythonで作成しようとしています。私はこれらのスレッドが同時に53を使用できるかどうか疑問に思っていました。ありがとう(この質問は馬鹿に思えるかもしれませんが、私は初心者です)複数のスレッドが同じポートを使用する可能性があります

答えて

0

しないでください。代わりにTwistedを使用してください。それはすでに、そのようなものすべてが完了している。

+0

Downvoter:あなたはポスターではなく自分のことを発明よりも、ツイスト使用する必要があることを否定するのですか? –

3

'reuse port'オプションを指定すると、複数のリスニングソケットを同じポートにバインドできます。しかし、私の経験では、マルチキャストパケットを受信して​​いる場合を除き、ソケットの1つだけが任意のパケットを受信します。

あなたは「マルチスレッドサーバー」について話すとき、通常、しかし、あなたが接続を監視サーバソケットがある場合(TCPではなくUDPを超える)「接続指向」プロトコルを使用して、サーバーの話をしている
mySocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1) 

接続が形成されると、接続を処理するスレッドが作成されます。

マルチスレッドUDPサーバーの場合、1つのソケットがあり、要求をキューに入れ、キューからプルして作業を行う複数のスレッドがあります。スレッド自体はソケットを処理する必要はありません。

(注:お使いのプラットフォームに応じて、あなたの代わりにいくつかの情報hereをSO_REUSEADDRを使用する必要があります。)

関連する問題