私の問題は、このサーバを作っていることです。サーバに 's'を送信してサーバをシャットダウンできるようにしたいのですが、どうしたらいいのですか?データを更新する(私はリターンとグローバルの両方を試みましたが、動作するようにはできませんでしたが、それは空のままですが、これについてのヒントを得ることができますか? 。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()
をトリミングする必要があり、実際に
s\r\n
です:戻りdata'を?何も返さないことが保証されています。そして、あなたは 'start_new_thread'の戻り値をどこからでも確認しないので、実際にこの方法で試してはいけません。グローバルなトレフは大規模な競争状態のようです。 – luk32おかげで、本当にpythonとコーディング全体に新しい、一緒に行くようにインターネットの周りに見つけたものをたくさん使用しました – cryseth