我不能在使用线程时关闭客户端

2024-04-19 03:23:01 发布

您现在位置:Python中文网/ 问答频道 /正文

这是客户机代码,它作为客户机的工作很好,但当我出来时,它会给我显示一个错误

这是密码

import socket
import threading


tLock = threading.Lock()
shutdown = False

def receving(name, sock):
    while not shutdown:
        try:
            tLock.acquire()
            while True:
                data, addr = sock.recvfrom(1024)
                print (str(data))
        except:
            pass
        finally:
            tLock.release()

host = '127.0.0.1'
port = 0

server = ('127.0.0.1',5000)

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind((host, port))
s.setblocking(0)

rT = threading.Thread(target=receving, args=("RecvThread",s))
rT.start()

alias = input("Name: ")
message = input(alias + "-> ")
while message != 'q':
    if message != '':
        s.sendto(bytes(alias + ": " + message,"utf8"), server)
    tLock.acquire()
    message = input(alias + "-> ")
    tLock.release()

shudown = True
rT.join()
s.close()

当我在shell中插入一个q时,它会停止shell,但是客户机正在运行,不知道为什么

这是我按ctrl+c时显示的内容

^{pr2}$

怎么解决这个问题请有人


Tags: importtruemessageinput客户机aliassocketsock