在python中同时运行多个套接字

时间:2016-11-05 16:42:17

标签: python python-3.x sockets

我正在尝试监听并同时向多个套接字发送数据。当我运行程序时,我得到错误说:

  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 个答案:

答案 0 :(得分:1)

您正在使用相同的套接字。为每个机器人创建一个:

a >= b