如何在Python中的一个客户端上创建多服务器套接字? 我正在考虑创建一个服务器套接字列表并与之建立连接 非阻塞套接字,但我没有找到一个很好的教程,这就是为什么我来到这里, 要求更好的解决方案或非阻塞插座指南。
谢谢!
感谢您的帮助,但我的意思是不同的东西,我有像这样的服务器列表:
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没有一个套接字列表,更方便的东西。
谢谢。
答案 0 :(得分:2)
如果您想将多个套接字连接到多个服务器,则应该查看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的文档。
答案 1 :(得分:1)
您可以使用select
。
http://pymotw.com/2/select/以及select
文档。
或者某些第三方模块,例如twisted
。