2011-06-19 14 views
0

私はクラウドコンピューティング環境のためのテストベッドを開発しています。私は、サーバーへの複数のクライアント接続を確立したい。私が望むのは、サーバーはまずすべてのクライアントにsending_intervalを指定してデータを送信し、その後、すべてのクライアントはそのtime_intervalの時間間隔(サーバーによって指定された時間)でデータを送信し続けます。私を助けてください、私はどのようにPythonのソケットプログラムを使用して同じことを行うことができます。 (つまり、複数のクライアントから単一のサーバーへの接続を望み、クライアントがサーバーによって指定された時間間隔でデータを送信したい)。もし誰かが私を助けることができれば偉大なものになるでしょう。前もって感謝します。Pythonソケットプログラミング

+2

geventやtwistedなどの既存のフレームワークを使用してこのタスクを支援することをお勧めします。私はあなたがする必要があることを完全にはわかりません。 – Pwnna

+0

私は、サーバーがすべてのクライアントに情報(つまりサンプリング時間)を送信することを望みます。その後、すべてのクライアントは、サーバーのデータ(つまりサンプリング時間)で指定された時間間隔内に、サーバーにデータを継続して送信し続けます。 –

+1

...だから何が問題なの? – Pwnna

答えて

0

この問題は、ZeroMQソケットライブラリによって簡単に解決されたです。生産安定です。パブリッシャーとサブスクライバーの関係を定義することができます。パブリッシング・プロセスは、リスニング・プロセスが何個あるか(0から無限)のリスニング・プロセスに関係なく、ポートにデータをパブリッシュします。彼らはこれをPUB-SUBモデルと呼びます。彼らのドキュメントにあります(下のリンク)。

すべてのサイト運営者のクライアントを設定したいと思うようです。彼らは制御チャネルに加入することができ、制御チャネルはその構成に更新を送信する(書き込む頻度)。彼らはまた、デフォルト/ config channel/socketで指定された間隔で自分のデータをプッシュアウトするパブリッシャーとしても機能します。

次に、クライアントの公開メッセージをすべて聴取する1つまたは複数のリスニングプロセスがあります。たぶん2つのリスニング・プロセスを持つこともできます.1つはバックアップやDRなどです。

私たちはZeroMQを使用しており、シンプルさを愛しています。それはです。パブリッシャーはリッスンしているかどうか気にせず、サブスクライバーはパブリッシャーの前で開始することができ、リッスンするものがなければ、ループしてそこまで待つことができるので、接続エラーはありません。

バインディングはすべての言語で使用できます(それは気難しいです)。 Pythonバインディングは純粋なPythonではなく、Cコンパイラが必要ですが、恐ろしく速く、pub/subの例はカット/ペーストです( 'golly、it works!')。経験。

リンク:http://zeromq.org

メッセージキューを含むこのライブラリで利用可能な多くの他の方法は、彼らはあまりにも、比較的完全なドキュメントを持っているなど、があります。

関連する問題