【问题标题】:Not exiting from python socket program不退出python套接字程序
【发布时间】:2017-10-18 12:15:58
【问题描述】:

我有以下 python UDP 套接字客户端。我想在按crtl+c的时候退出程序,但是由于线程的原因没有发生,我该如何解决这个问题?

import socket
from threading import Thread
import signal
import sys
message = "well"
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_address = ('127.0.0.1', 3447)
def sighandler(signum, frame):
    # Close the server
    global sock
    print 'Shutting down server...'
    # Close existing client socket   
    sock.close()
signal.signal(signal.SIGINT, sighandler)

def recv():
    while True:
        print "Waiting to receive data"
        data, server = sock.recvfrom(4096)
        print "Server : ", server
        print "data   : ", data
Thread(target=recv).start()

try:
    while True:
        message = raw_input()
        print >>sys.stderr, 'sending "%s"' % message
        sent = sock.sendto(message, server_address)
except:
    import traceback; traceback.print_exc();

finally:
    sock.close()

【问题讨论】:

    标签: python sockets


    【解决方案1】:

    有时你在线程中只需要:

    t = Thread(target=recv)
    # Daemon runs in background, and main can respond to ctrl-c.
    t.daemon = True
    t.start()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-11
      • 2018-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-17
      相关资源
      最近更新 更多