tcp_server
from socket import *
import subprocess
ip_port = ('127.0.0.1', 8080)
back_log = 5
buf_size = 1024
tcp_server = socket(AF_INET, SOCK_STREAM)
tcp_server.bind(ip_port)
tcp_server.listen(back_log)
while True:
conn, addr = tcp_server.accept()
while True:
# try except在客户端异常退出处理错误,防止服务端异常退出
try:
cmd = conn.recv(buf_size)
cmd_res = subprocess.Popen(cmd.decode(encoding='utf-8'), shell=True, stdout=subprocess.PIPE, stdin=subprocess.PIPE,
stderr=subprocess.PIPE)
# 在客户端主动退出做处理,防止循环recev空
if not cmd: break
if cmd_res.stderr.read():
continue
else:
conn.send(cmd_res.stdout.read())
except Exception as err:
print(err)
break
tcp_server.close()
tcp_client
from socket import *
ip_port = ('127.0.0.1', 8080)
buf_size = 1024
tcp_client = socket(AF_INET, SOCK_STREAM)
tcp_client.connect(ip_port)
while True:
msg = input('>>').strip()
if not msg: continue
if msg == 'quit': break
tcp_client.send(msg.encode(encoding='utf-8'))
data = tcp_client.recv(buf_size)
print(data.decode(encoding='gbk'))
tcp_client.close()