繁体   English   中英

启动新线程后,while循环不继续(python)

[英]While loop not continuing after starting a new thread (python)

我有一台应该接受多个客户端的服务器,但是由于某种原因,当它为客户端启动一个新线程时,它不会继续while循环,直到客户端断开连接为止。

另外,while循环会停止select.select,直到有sock.accept的挂起连接才继续。 我将self.serverstatus值更改为0后,它也无法正常断开并使套接字关闭

这是服务器的代码

编辑:修复了将包含ct.run()的行更改为ct.start()

 def serverstart(self):
          self.buttonswitch("1")
          self.host = self.intip
          self.port = 5000
          s = socket.socket(socket.AF_INET6)
          s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
          s.bind((self.host, self.port))

          inputs = [ s ]

          s.listen(5)
          self.serverstatus = "1"
          while True:
                inputready, outputready, exceptready = select.select(inputs, [], [])
                if inputready != " " and self.serverstatus == "1":
                        c, addr = s.accept()
                        ct = threading.Thread(target=self.client_thread, args=[c, addr])
                        ct.start()
                elif self.serverstatus == "0":
                        break
          s.close()
          print "Closing socket"
          self.buttonswitch("0")

        def client_thread(self, c, addr):
          print "Connection from: " + str(addr)
          while True:
                data = c.recv(1500)
                print len(data)
                if not data:
                        break
                data = str(data).upper()
                c.send(data)
                if self.serverstatus == "0":
                        break
          c.close()
ct.run()

我相信您需要start这里start ,而不是run 线程的run方法是在线程启动时将要执行的代码,但是调用run实际上并不会在单独的线程中启动代码。

ct.start()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM