25次作业

CS架构实现远程命令传输

#客户端
import socket

phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

phone.connect(('127.0.0.1', 8888))

while True:
    msg = input("请输入命令:").strip()
    if len(msg) == 0: continue
    phone.send(msg.encode('utf-8'))
    msg = phone.recv(8080)
    print(f'{msg.decode("utf-8")}')

phone.close()
#服务器
import socket,
import subprocess
phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
phone.bind(('127.0.0.1', 8080))
print('等待连接中')
phone.listen(5)
while True:
    conn, addr = phone.accept()
    print(f'客户端:{addr}')
    try:
        while True:
            msg = conn.recv(1024)
            if len(msg) == 0:
                break
            print(f'来自客户端消息:{msg.decode("utf-8")}')
            res = subprocess.Popen(msg.decode("utf-8"), shell=True, stdout=subprocess.PIPE)
            res = res.stdout.read().decode('gbk')
            if res:
                conn.send(res.encode('utf-8'))
            else:
                conn.send('没有消息输出'.encode('utf-8'))
    except Exception:
        conn.close()
posted @ 2020-04-20 21:04  祥SHAO  阅读(86)  评论(0)    收藏  举报