0

Pythonソケットを使用して2つのグループ間のグループ通信を設定する必要があります。各グループには、グループ内の他のメンバーへのサーバーとして機能するグループリーダーがあり、グループ内でメッセージを転送します。2人のグループリーダーも、グループ間メッセージを転送するために通信する必要があります。

私のプログラムは、グループ内のメッセージを転送するように機能しています。ただし、グループ間メッセージを転送するために、各リーダー(サーバー)に新しいスレッドを作成し、リーダーの1つをクライアントとして、もう1つをクライアントとして使用しました。

問題:私の問題は、サーバー2がサーバー1に接続しようとした時点で、「[Errno111]接続が拒否されました」というエラーが発生することです。

コード(サーバー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 */

ジェイPありがとうございます

于 2013-03-14T04:41:42.560 に答える