如何终止用python写的socket服务端程序?
问题描述
用python写了一个socket服务端的程序,但是启动之后由于监听连接的是一个死循环,所以不知道怎样在cmd运行程序的时候将其终止。
#!/usr/bin/python# -*- coding: utf-8 -*-import socketimport threading, timedef tcplink(sock,addr): print(’Accept new connection from %s:%s...’ %addr) sock.send(b’Welcome!’) while True:data=sock.recv(1024)time.sleep(1)if not data or data.decode(’utf-8’)==’exit’: breaksock.send((’Hello,%s!’% data.decode(’utf-8’)).encode(’utf-8’)) sock.close() print(’Connection from %s:%s closed.’ % addr) s=socket.socket()s.bind((’127.0.0.1’,1234))s.listen(5)print(’Waiting for conection...’)while True: #accept a new connection sock,addr=s.accept() #create a new thread t=threading.Thread(target=tcplink,args=(sock,addr)) t.start()
在win10上的cmd运行后的情况是按ctrl+c,ctrl+z,ctrl+d都不能终止,请问要怎么终止程序?
问题解答
回答1:Ctrl + C
回答2:在启动线程之前,添加 setDaemon(True)
while True: #accept a new connection sock,addr=s.accept() #create a new thread t=threading.Thread(target=tcplink,args=(sock,addr)) t.setDaemon(True) # <-- add this t.start()
daemon
A boolean value indicating whether this thread is a daemonthread (True) or not (False). This must be set before start() iscalled, otherwise RuntimeError is raised. Its initial value isinherited from the creating thread; the main thread is not a daemonthread and therefore all threads created in the main thread default todaemon = False.
The entire Python program exits when no alive non-daemon threads areleft.
这样 <C-c> 的中断信号就会被 rasie。
回答3:kill -9回答4:
关闭cmd命令窗口,重新开启一个cmd,我是这么做的。
回答5:可以使用signal模块,当按住Ctrl+C时,捕捉信息,然后退出.
#!/usr/bin/env python# -*- coding: utf-8 -*-import signaldef do_exit(signum, frame): print('exit ...') exit()signal.signal(signal.SIGINT, do_exit)while True: print('processing ...')回答6:
我记得可以
try: ......except KeyboardInterrupt: exit()
相关文章:
1. javascript - jQuery post()方法,里面的请求串可以转换为GBK编码么?可以的话怎样转换?2. 为什么学习PHP3. javascript - vue 数据更新了。但是dom没有更新,,,,,如图4. html5 - javascript写业务有用到什么编程范式没?5. css3 transform scale后图片变模糊大家有遇到过么6. javascript - vue 手机端项目在进入主页后 在进入子页面,直接按返回出现空白情况7. mysql - 现在已经使用CommandArgument取到t_ID的值,现在还想取t_Name的值一起放到cs文件中的sql语句中该怎么做8. 老哥们求助啊9. javascript - 哪位大神指导下,如何实现今日头条头部导航列表,点那个类型,哪种类型就居中了?10. 网页动画等过渡效果,CSS3 transitions 和 jQuery animations 谁实现的性能更好?

网公网安备