Python,套接字错误:[Errno 111]尝试在同一文件中创建2台服务器时

Python,套接字错误:[Errno 111]尝试在同一文件中创建2台服务器时,python,network-programming,Python,Network Programming,我必须使用python套接字设置两个组之间的组通信。每个组都有一个组长,该组长充当组中其他成员的服务器,以便在组内传递消息。两位组长还需要沟通以传递组间信息 我的程序正在处理组消息的传输。然而,为了传输组间消息,我在每个leader(服务器)上创建了一个新线程,并将一个leader作为客户端,另一个作为客户端 问题:我的问题是,在服务器2尝试连接到服务器1的位置,我收到了一个“[Errno 111]Connection-rejected”错误 代码(服务器1)组间MsgSender函数: int

我必须使用python套接字设置两个组之间的组通信。每个组都有一个组长,该组长充当组中其他成员的服务器,以便在组内传递消息。两位组长还需要沟通以传递组间信息

我的程序正在处理组消息的传输。然而,为了传输组间消息,我在每个leader(服务器)上创建了一个新线程,并将一个leader作为客户端,另一个作为客户端

问题:我的问题是,在服务器2尝试连接到服务器1的位置,我收到了一个“[Errno 111]Connection-rejected”错误

代码(服务器1)组间MsgSender函数:

interGrpSock = socket.socket()        
interGrpSock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
host = socket.gethostname() 
port = 12349 
interGrpSock.bind((host, port))     
s.listen(1)  
clientSock, addr = s.accept()
# The other server has connected, handle sending messages
while(len(interGroupMsgs) > 0):
    msg = interGroupMsgs.pop(0)
    clientSock.send(msg);
ss = socket.socket()      
host = socket.gethostname() 
port = 12349 
try:
    ss.connect((host, port))
代码(服务器2)组间MsgSender函数:

interGrpSock = socket.socket()        
interGrpSock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
host = socket.gethostname() 
port = 12349 
interGrpSock.bind((host, port))     
s.listen(1)  
clientSock, addr = s.accept()
# The other server has connected, handle sending messages
while(len(interGroupMsgs) > 0):
    msg = interGroupMsgs.pop(0)
    clientSock.send(msg);
ss = socket.socket()      
host = socket.gethostname() 
port = 12349 
try:
    ss.connect((host, port))
创建新线程的代码(两台服务器相同):

注意:这两台服务器都已作为其他组成员的服务器运行


提前感谢您的帮助。

JayP在上面的评论中给出的答案是代码中的一个简单问题。由于我复制了代码,但没有正确地检查它:(

服务器1代码应为:

interGrpSock.bind((host, port))     
interGrpSock.listen(1)          /* Instead of s.listen(1) here */

再次感谢Jay p

两台服务器都在同一台主机上运行吗?是的,实际上都在本地主机上。在服务器2尝试连接之前,服务器1是否开始侦听?我还注意到您只调用
accept
一次,您的“组间MsgSender”会吗总是在服务器2尝试连接之前调用服务器1中的函数?是的,在我运行服务器2之前,服务器1已启动并正在侦听。感谢您的帮助顺便问一下:)对于服务器1,
s
来自哪里?它应该是
interGrpSock.bind((主机,端口))
,对于
accept
调用也是如此。你能发布一些我们可以自己运行的可重复代码吗?