Я написал в своей программе udp no echo server, я использовал поток для запуска и прослушивал сообщения, отправляемые другими пользователями. Но, похоже, я не мог остановить его использование tl.stop()
, когда я ввожу q
или quit
. Некоторые из моего кода заключается в следующем:Как остановить udp-сервер в потоковом режиме?
class treadListen(threading.Thread):
def __init__(self):
self.running = True
threading.Thread.__init__(self)
def run(self):
address = ('localhost', 16666)
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(address)
while True:
data = sock.recv(65535)
print "MESSAGE:{0}".format(data)
sock.close()
def stop(self):
self.running = False
# end of class thread_clock
if __name__ == "__main__":
tl = treadListen()
tl.start()
while True:
message = raw_input("CMD>")
if not message:
print "Please input command!"
continue
elif (message == 'quit') or (message == 'q'):
tl.stop()
break
else:
print "input is {0}".format(message)
# do something
continue
print "[CONNECTION CLOSED!]"
Я пытался добавить sock.shutdown(socket.SHUT_RDWR)
и sock.close()
в DEF остановку класса, но он не работает. Как я могу остановить безопасность потока? Благодаря!
Возможный дубликат (http://stackoverflow.com/questions/1112343/how-do-i-capture-sigint- in-python) – rbp
вы также неправильно понимаете 'elif',' continue' и 'break' – rbp