Как получить несколько клиентов для подключения к одному и тому же источнику в Python?
Я сделал класс в Python, в котором есть сокет. Когда я пытаюсь запустить несколько экземпляров одного и того же класса, я получаю эту ошибку:
error: [Errno 10056] A connect request was made on an already connected socket
Я могу видеть, что говорит ошибка, но я, хотя классы были независимы друг от друга, когда они работают. Так что это не помешает.
Вот код, который я использую:
class Bot():
HOST = "localhost"
PORT = 6667
s = socket.socket()
def Connect(self):
self.s.connect((self.HOST, self.PORT))
Затем, когда я создаю ботов:
bots = []
def Setup_Bot():
global bots
_bot = Bot()
_bot.Connect()
bots.append(_bot)
if __name__ == "__main__":
for i in range(5):
Setup_Bot()
sleep(1)
print "Done Setting Up"
Как я смогу заставить это работать?
1 ответ
Решение
Сделать розетку s
переменная экземпляра вместо установки ее в классе. Все ваши экземпляры Bot теперь имеют одинаковые атрибуты класса и, следовательно, один и тот же сокет.
class Bot():
HOST = "localhost"
PORT = 6667
def __init__(self):
self.s = socket.socket()
def Connect(self):
self.s.connect((self.HOST, self.PORT))