2016-08-26 14 views
0

私のスクリプトはマシン1で複数のクライアントを起動し、特定のポート上の異なるマシン上で動作するサーバーに接続しようとしています。サーバーを実行しているこれらのマシンはboto3によって起動され、インスタンスが実行中の状態になるまで5分間待機します。その後、ファイルを転送するためにSFTP接続が行われます。その後、sshを介してサーバスクリプトが実行されます。次に、machine-1で複数のクライアントが起動され、サーバーに接続しようとすると、1つの接続のみが確立され、他のクライアントは接続拒否エラーConnectionRefusedErrorが発生します。Pythonソケット(ストリーム)で接続が拒否されましたか?

は、ここに私のコードです:

クライアント:

def Client(datas): 
    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
    client.connect((datas[0], 81)) 
    datasent =''+datas[1]+'-'+datas[2]+'#' 
    client.send(datasent.encode("UTF-8")) 
for dataToRun in dataForMP: 
    hp = Process(target=Client, args=(dataToRun,)) 
    hp.start() 
hp.join() 

サーバー:私は、サーバーのt1.microインスタンスを起動しています

if __name__ == '__main__': 
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0) 
    sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 
    sock.setblocking(0) 
    sock.bind(("", 81)) 
    sock.listen(128) 

。インスタンスを起動してからクライアントとサーバーを起動する前に10分待っていましたが、同じエラーが発生しています。

+0

接続先を確認できますか?また、AWSインスタンスのポートでトラフィックを有効にする必要があります – famagusta

+0

セキュリティグループの受信ルールにポートを追加し、すべてのトラフィックソースを許可しました – sankycse

+0

はシングルスレッドサーバーを使用していますか?なぜ1つだけが接続しているのか、他は接続していないのかを説明できる – famagusta

答えて

0

問題は、サーバーとクライアントの起動の間の時間の不一致に関するものでした。実際には、サーバを起動するのに少し時間がかかり、その間にクライアントからの接続要求があります。クライアントを起動する前に2秒遅れて問題が解決されました。

関連する問題