2

如何在 Python 中的一个客户端上创建多服务器套接字?我正在考虑创建一个服务器套接字列表并与非阻塞套接字建立连接,但我没有找到一个好的教程,这就是我来这里的原因,寻求更好的解决方案或非阻塞指南插座。

谢谢 !


感谢您的帮助,但我的意思有所不同,我有这样的服务器 Ip 列表:

SERVER_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 服务器,但我在这里问我是否有不同的方法可以在没有套接字列表的情况下连接到所有这些服务器 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()方法返回对您无用的基础文件号(您的操作系统用来表示文件的文件号)。我只是按该数字将套接字存储在字典中,因此您可以从 poll 给出的文件编号中获取实际的套接字对象。我建议阅读 select.poll 的文档,上面的链接。

于 2013-07-09T04:29:51.070 回答
2

您可以使用select.
http://pymotw.com/2/select/加上select文档。
或一些第三方模块,例如twisted.

于 2013-07-09T04:27:46.957 回答