所以我的問題是即時通訊製作這臺服務器,我希望它能夠通過發送's'關閉服務器,但無論我嘗試我無法關閉服務器更新數據(你可以看到我已經嘗試了return和global,但不能讓它工作:(),它仍然是空的,我可以得到一個提示嗎?真的是新的python,所以如果可能的話,很容易理解。更新python服務器中的函數內部變量
import socket
import sys
from _thread import *
host = ''
port = 4444
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.bind((host, port))
except socket.error as e:
print(str(e))
s.listen(1)
print('waiting for connetion')
def threaded_client(conn):
conn.send(str.encode('welcome, type your data'))
while True:
global data
data = conn.recv(2048)
data = data.decode('utf-8')
reply = 'server output: '+ data
if not data:
print('connetion lost')
return data
break
conn.sendall(str.encode(reply))
conn.close()
while True:
global data
data = ''
conn, addr = s.accept()
print('connected to: '+ addr[0]+ ':' +str(addr[1]))
start_new_thread(threaded_client, (conn,))
print(data)
if data == 's':
print('shutting down server goodbye....')
s.close()
exit()
你怎麼能期望得到的數據回來,如果你寫的東西像'如果沒有數據:返回data'?它保證不會返回任何東西。而且你不檢查任何地方的'start_new_thread'返回,所以你不會真的這樣試試。走低谷全球似乎是一個巨大的競爭條件。 – luk32
okey謝謝,真的是新的python和整體編碼,使用了很多我在互聯網上找到的東西,使它們走在一起 – cryseth