如何在Python中的一个客户端上创建多服务器套接字?

时间:2013-07-09 04:22:15

标签: python sockets connection multiserver

如何在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没有一个套接字列表,更方便的东西。

谢谢。

2 个答案:

答案 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