2016-11-05 40 views
0

私はいくつかのソケットに同時にデータを受信して​​送信しようとしています。私はプログラムを実行すると、私はエラーアン得ると言って:複数のソケットを同時にPythonで実行する

File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/ssl.py", line 704, in __init__ 
if sock.getsockopt(SOL_SOCKET, SO_TYPE) != SOCK_STREAM: 

OSErrorの:[errnoが9]不正なファイルディスクリプタ

最初のソケットが正常に起動し、私は新しいものを起動しようと一度私が取得エラー。

class bot: 
    def __init__(self, host, port): 
     self.host = host 
     self.port = port 

    sock = socket.socket() 
    s = None 

    def connect_to_server(self): 
     self.s = ssl.wrap_socket(self.sock) 
     self.s.connect((self.host, self.port)) 

上記はクラスです。次に、いくつかのインスタンスを実行しています。

def run_bots(bots): 
    for bot in bots: 
     try: 
      threading.Thread(target=bot.connect_to_server()).start() 
     except: 
      print(bot.host) 
      print("Error: unable to start thread") 
bots = [] 
b = bot('hostname.com', 1234) 
b1 = bot('hostname1.com', 1234) 
bots.append(b) 
bots.append(b1) 
run_bots(bots) 

私は何をすべきかわかりません。誰が問題になるのか考えていますか?

答えて

1

同じソケットを使用しています。各ボットに1つ作成してください:

class bot: 
    def __init__(self, host, port): 
     self.host = host 
     self.port = port 
     self.s = None 

    def connect_to_server(self): 
     sock = socket.socket() 
     self.s = ssl.wrap_socket(sock) 
     self.s.connect((self.host, self.port)) 
+0

しかし、私はボットクラスの新しいインスタンスを作成するときに新しいボットを作成しませんか? – Marius

+0

それは働いています。ありがとう:) – Marius

関連する問題