0

我在 Python 线程(服务器)中有一段代码,但是当我运行客户端时,发现了这些错误:“UnboundLocalError: local variable 'stop' referenced before assignment”:

import threading
import msvcrt

stop = False
Buffer= 1024

class ChatServer(threading.Thread):
   def __init__(self,channel,addr,counter):
       self.channel = channel
       self.addr = addr
       self.counter = counter
       threading.Thread.__init__(self)
       self.start()

   def run(self):
       # press s to trigger
       if msvcrt.kbhit():
           if msvcrt.getch() == 's':
               stop = True
               print "Login is closed closed.\n"
       while 1:
           if (stop == False):
               print "\nClient connection received!\n"
               self.channel.send("Status: Server connection received")

counter = 0                   
server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server.bind(("",500))
server.listen(20)

while True:
    print "\nServer awaiting connections....\n"
    channel, addr = server.accept()
    counter += 1
    ChatServer(channel,addr,counter)
4

1 回答 1

1

stop您只在非常特定的条件下设置变量,而从不将其设置为False. stop = False在函数顶部添加显式run()

def run(self):
   stop = False
   # press s to trigger
   if msvcrt.kbhit():
       if msvcrt.getch() == 's':
           stop = True
           print "Login is closed closed.\n"
   while 1:
       if (stop == False):
           print "\nClient connection received!\n"
           self.channel.send("Status: Server connection received")

可能希望在某个时候在循环stop while设置,因为它现在永远不会停止,如果stop = True达到。

于 2013-03-18T12:02:57.890 回答