一、服务端
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
from socket import * import subprocess
server = socket(AF_INET, SOCK_STREAM)
server.bind(('127.0.0.1', 8000)) server.listen(5)
print('start...') while True: conn, client_addr = server.accept()
while True: print('from client:', client_addr)
cmd = conn.recv(1024) if len(cmd) == 0: break print('cmd:', cmd)
obj = subprocess.Popen(cmd.decode('utf8'),
|
二、客户端
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
import socket
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('127.0.0.1', 8000))
while True: data = input('please enter your data') client.send(data.encode('utf8')) data = client.recv(1024)
print('from server:', data)
client.close()
|
输入dir命令,由于服务端发送字节少于1024字节,客户端可以接受。
输入tasklist命令,由于服务端发送字节多于1024字节,客户端只接受部分数据,并且当你再次输入dir命令的时候,客户端会接收dir命令的结果,但是会打印上一次的剩余未发送完的数据,这就是粘包问题。