-1

我正在创建服务器,但我碰壁了,似乎无法爬过它......

我当前的代码运行良好,直到用户与服务器断开连接。无数的 \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
4

2 回答 2

2

因为您在调用 recv() 时从不检查 EOS,所以您永远不会检测到断开连接。

于 2012-11-07T06:01:01.773 回答
0

好吧,看来我已经想通了。

  def recv(self, obj, addr, s):
      while True:
          try:a = obj.recv(1024)
          except:pass
          if not p: return 1
          else: print a
于 2012-11-07T23:16:45.437 回答