我只是在python中搞乱线程,写了这个基本的IM东西[底部的代码]
我注意到,当我用Cc杀死程序时它不会退出,它只是永远挂起.
我只是猜测它正在等待每个线程完成他们正在做的事情,但因为它是一个永远不会发生的无限循环.
所以我想我需要手动杀死每个线程,或者在killsignal进来时结束循环.
我该怎么做?
#!/usr/bin/env python
import threading
import socket
class Listen(threading.Thread):
def run(self):
conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
conn.bind(('', 2727))
conn.listen(1)
while True:
channel, details = conn.accept()
print str(details)+": "+channel.recv(250)
channel.send("got it")
channel.close()
class Shout(threading.Thread):
def run(self):
while True:
try:
address = raw_input("who u talking to? ")
conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
conn.connect((address, 2727))
break
except:
print "can't connect to "+ str(address)
while True:
conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
conn.connect((address, 2727))
conn.send(raw_input())
conn.close()
listen = Listen().start()
shout = Shout().start()
Run Code Online (Sandbox Code Playgroud) 我怎么能叫shutdown()在SocketServer接收到某个消息"退出"之后?据我所知,调用serve_forever()将阻止服务器.
谢谢!