Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中的一个客户端上创建多服务器套接字?_Python_Sockets_Connection_Multiserver - Fatal编程技术网

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

如何在Python中的一个客户端上创建多服务器套接字?,python,sockets,connection,multiserver,Python,Sockets,Connection,Multiserver,如何在Python中的一个客户端上创建多服务器套接字? 我正在考虑创建一个服务器套接字列表,并与 非阻塞套接字,但我没有找到一个很好的教程,这就是我来这里的原因, 寻求更好的解决方案或非阻塞插座指南 谢谢大家! 感谢您的帮助,但我的意思是不同的,我有这样的服务器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创建套接字列表,

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

谢谢大家!


感谢您的帮助,但我的意思是不同的,我有这样的服务器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服务器,但我要求 在这里,如果我有一种不同的方式连接到所有这些Ip服务器,而不需要套接字列表,那就更方便了


谢谢。

您可以使用
选择

加上
选择
文档

或者一些第三方模块,例如
twisted

如果您想将多个套接字连接到多个服务器,您应该检查
选择
模块()

基本上,它是这样工作的:

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的文档