我需要一個替代方案來殺死線程函數中的python腳本。我的意圖是當客戶端輸入一個0時終止服務器...這是行不通的,因爲線程還沒有終止?這裏是我的代碼:爲什麼sys.exit(),exit()方法引發SystemExit不起作用?
socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM);
print 'Socket created'
try:
socket.bind((HOST, PORT))
except socket.error, message:
print 'Bind statement failed. ERROR: ' + str(message[0]) + ' Message: ' + message[1]
sys.exit()
print 'Socket Binding Successful'
socket.listen(10)
print 'Socket is currently listening'
def clientThread(connection):
while 1:
data = connect.recv(1024)
try:
quit = int(data)
except:
quit = 3
if quit == 0:
print 'Closing the connection and socket...'
connect.close()
socket.close()
sys.exit(); //Alternative needed here...
break
reply = 'Ok....' + data
if not data:
break
connect.sendall(reply)
while 1: #forever loop
connect, address = socket.accept()
print 'Just connected with ' + address[0] + ' : ' + str(address[1])
start_new_thread(clientThread, (connect,))
socket.close()
我導入操作系統,但是當試圖'os._exit()'我得到的錯誤:回溯(最近最後調用最後): 文件「server.py」,第35行,在clientThread中 os._exit(); NameError:未定義全局名稱'os' –
@CSGamer:您在哪裏添加了導入?你確定你沒有錯字嗎?因爲沒有理由不應該工作。 – abarnert
這裏是我的進口頂端:import import import sys from thread import *' –