所以我的问题是我正在制作这个服务器,我希望它能够通过向服务器发送'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()
答案 0 :(得分:0)
在第38行左右,将其更改为
while True:
if data and data.strip() == 's':
print('shutting down server goodbye....')
s.close()
exit()
仍然可以对代码进行许多改进,但是如果检测到's',此更改将导致脚本退出。
在您的代码中,检查数据=='s'失败有两个原因:
s\r\n
,因此您必须修剪换行符