有没有办法使用单个端口连接到多个服务器?

时间:2016-12-18 07:58:15

标签: python-3.x sockets

我的意思是一些类似服务器的行为(在一个端口上持有大量客户端)。所以我试图从单个本地端口连接到N个服务器。 有没有办法做到这一点?

我试过了:

  • multiple bind()s。 - 错误
  • DUP()licating。 - 错误
提前谢谢。

2 个答案:

答案 0 :(得分:0)

我不认为你可以,因为套接字对象只需要一个参数。你只需要创建另一个套接字对象

答案 1 :(得分:0)

  

是否可以使用单个端口连接到多个服务器?

这取决于操作系统。例如,Linux 3.9或更高版本具有SO_REUSEPORT套接字选项(源自BSD)。在这样的系统上,以下程序可以成功运行:

from socket import *
single_local_port = 12345
server1 = ('127.0.0.1', 80)     # just an example address
server2 = ('10.28.130.10', 80)  # just another example address
s1 = socket(AF_INET, SOCK_STREAM)
s1.setsockopt(SOL_SOCKET, SO_REUSEPORT, 1)
s1.bind(('', single_local_port))
s1.connect(server1)
s2 = socket(AF_INET, SOCK_STREAM)
s2.setsockopt(SOL_SOCKET, SO_REUSEPORT, 1)
s2.bind(('', single_local_port))# no problem binding to same port
s2.connect(server2)