0

我必须使用 python 套接字在 2 个组之间设置组通信。每个组都有一个组长,作为组内其他成员的服务器,在组内传输消息。2个组长也需要通信才能传递组间消息。

我的程序正在传输组内消息。但是,为了传输组间消息,我在每个领导者(服务器)上创建了一个新线程,并将其中一个领导者作为客户端,另一个作为客户端。

问题:我的问题是在服务器 2 尝试连接到服务器 1 时出现“[Errno 111] Connection denied”错误。

代码(服务器 1)interGroupMsgSender 函数:

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);

代码(服务器 2)interGroupMsgSender 函数:

ss = socket.socket()      
host = socket.gethostname() 
port = 12349 
try:
    ss.connect((host, port))

创建新线程的代码(两台服务器相同):

thr2 = threading.Thread(target = interGroupMsgSender);
thr2.daemon=True  # Causes the thread to terminate when main process ends
thr2.start();

注意:这两个服务器都已充当其他组成员的服务器。

在此先感谢您的帮助。

4

1 回答 1

0

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

服务器 1 代码应为:

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

再次感谢Jay P

于 2013-03-14T04:41:42.560 回答