2016-11-05 26 views
0

我在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" 

我怎麼能得到這個工作?

回答

2

使套接字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)) 
+0

修正了這個問題,謝謝! – Malpp

相關問題