2

Python で 1 つのクライアントにマルチサーバー ソケットを作成する方法は? サーバーソケットのリストを作成してノンブロッキングソケットと接続することを考えていますが、そのための良いチュートリアルが見つからないため、より良い解決策またはノンブロッキングのガイドを求めるためにここに来ましたソケット。

ありがとうございました !


助けてくれてありがとう、しかし私は何か違うことを意味します、私はそのようなサーバーIPのリストを持っています:

サーバー_IP = ['127.0.0.1', '127.0.0.2', '127.0.0.3', '127.0.0.4', '127.0.0.5', '127.0.0.6, '127.0.0.7']

IPでソケットのリストを作成し、すべてのIPサーバーに接続しようとするオプションが1つありますが、ソケットのリストなしでこのすべてのサーバーIPに接続する別の方法があるかどうかをここで尋ねます。

ありがとうございました。

4

2 に答える 2

3

複数のソケットを複数のサーバーに接続したい場合は、selectモジュール ( http://docs.python.org/2/library/select.html ) をチェックアウトする必要があります。

基本的には、次のように機能します。

import socket, select
socks = {}
# Connect to different servers here #
sock1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socks[sock1.fileno()] = sock1
poll = select.poll()
for sock in socks:
    poll.register(sock)
while 1:
    fd, event = poll.poll() # Optional timeout parameter in seconds
    sock = socks[fd]
    sock.recv(1024) # Do stuff

このpoll.poll()メソッドは、基になるファイル番号 (オペレーティング システムがファイルを表すために使用するもの) を返しますが、これは役に立ちません。ソケットをその番号でディクショナリに保存するだけなので、ポーリングで指定されたファイル番号から実際のソケット オブジェクトを取得できます。上記のリンクにある select.poll のドキュメントを読むことをお勧めします。

于 2013-07-09T04:29:51.070 に答える
2

使用できますselect
http://pymotw.com/2/select/selectドキュメント。
または、 などのサードパーティ製モジュールtwisted

于 2013-07-09T04:27:46.957 に答える