2016-11-05 2 views
0

파이썬에서 소켓을 가진 클래스를 만들었습니다.여러 클라이언트를 파이썬에서 동일한 소스에 연결하려면 어떻게해야합니까?

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을 인스턴스 변수로 설정하는 대신 클래스에 설정하십시오. 이제 모든 봇 인스턴스는 동일한 클래스 속성을 공유하므로 동일한 소켓을 공유합니다.

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

관련 문제