如何终止用python写的socket服务端程序?
黄舟
黄舟 2017-04-18 10:20:24
0
6
777

用python写了一个socket服务端的程序,但是启动之后由于监听连接的是一个死循环,所以不知道怎样在cmd运行程序的时候将其终止。

#!/usr/bin/python
# -*- coding: utf-8 -*-
import socket
import threading, time

def 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':
            break
        sock.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都不能终止,请问要怎么终止程序?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全員に返信(6)
迷茫

Ctrl + C

いいねを押す +0
PHPzhong

启アニメーション途中前、追加setDaemon(True)

リーリー

デーモン

このスレッドがデーモン
スレッドであるか (True)、否か (False) を示すブール値。これは start() が呼び出される前に設定する必要があります。そうしないと RuntimeError が発生します。その初期値は、作成中のスレッドから
継承されます。メインスレッドはデーモン
スレッドではないため、メインスレッドで作成されるすべてのスレッドはデフォルトで
daemon = Falseになります。

生きている非デーモン スレッドがなくなると、Python プログラム全体が終了します


この样 の中断信号が発生する可能性があります。
いいねを押す +0
阿神

リーリー

いいねを押す +0
小葫芦

cmd コマンドウィンドウを閉じて、cmd を再度開きます。これが私がやったことです。

いいねを押す +0
左手右手慢动作

Ctrl+Cを押すと、シグナルモジュールを使用して情報をキャプチャして終了できます。

リーリー
いいねを押す +0
伊谢尔伦

懐かしいですね

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート