2012-11-07 1 views
-1

나는 서버를 만드는 과정에 있지만 벽을 치고 그 위에 올라있는 것처럼 보일 수 없다 ...클라이언트가 끊어 질 때 내 서버가 무한정 n 인쇄를하는 이유는 무엇입니까?

사용자가 서버에서 연결을 끊을 때까지 현재 코드가 잘 작동한다. 끝없는 양의 \ n이 인쇄되고 이유를 파악할 수 없습니다.

나는이 문제가 recv 함수에 있다는 것을 알고있다. 나는 그것이 내 쓰레딩과 관련이 있다고 믿지만 그게 무엇인지 알아낼 수 없다.

코드는 다음과 같습니다. 누군가 나를 도울 수 있다면 매우 감사 할 것입니다.

def recv(self, obj, addr, s): 
    while True: 
     try:print obj.recv(1024) 
     except:pass 

def connect(self, port): 
    s = socket.socket() 
    s.bind(('', port)) 
    s.listen(1) 
    self.clearscreen() 

    print "Waiting for connections..." 
    while True: 
     obj, addr = s.accept() 
     verify = obj.recv(1024) 
     if verify == "ea25364e2dab91b40ae4f73163854b5d": 
      print "\n"+str(addr) + " has connected.\n " 
      self.conns[addr] = obj 
      try: 
       Thread(target=self.handle, args=(obj, addr, s)).start() 
       Thread(target=self.recv, args=(obj, addr, s)).start() 
      except:pass 
     else:pass 

답변

2

recv()를 호출 할 때 절대로 EOS를 확인하지 않으므로 연결이 끊어지지 않습니다.

+0

EOS는 무엇을 의미합니까? – Max00355

+0

@ Max00355 스트림의 끝. – EJP

+0

그래, 문제는 이미 오류를 검사하고있다. 이 문제를 해결하는 방법을 모르겠습니다. – Max00355

0

좋아요, 알아 냈습니다.

def recv(self, obj, addr, s): 
     while True: 
      try:a = obj.recv(1024) 
      except:pass 
      if not p: return 1 
      else: print a 
관련 문제