服务器端

import socket
import subprocess
import struct
server = socket.socket()
ip_port = ("192.168.15.33",8001)
server.bind(ip_port)
server.listen()
conn,addr = server.accept() while 1:
print("等待接收消息...")
from_client_cmd = conn.recv(1024).decode("utf-8")#接收客户端消息
print(from_client_cmd) sub_obj = subprocess.Popen( #通过subprocess模块执行服务端指令,并拿到指令结果
from_client_cmd, #客户端指令
shell = True,
stdout = subprocess.PIPE, #标准输出:正确指令的执行结果
stderr = subprocess.PIPE, #标准错误输出:错误指令的执行结果
) server_cmd_msg = sub_obj.stdout.read()
#server_cmd_msg = sub_obj.stderr.read() #接收到的返回信息是bytes类型,并且windoes系统的默认编码为gbk
cmd_msg_len = len(server_cmd_msg) #计算你要发送的数据长度
msg_len_stru = struct.pack("i",cmd_msg_len)#先对数据长度进行打包,打包成4个字节的数据,目的是为了和你将要发送的数据拼接在一起,就像我们自制一个消息头.
conn.send(msg_len_stru) #首先发送打包成功后的那4个字节的数据
conn.sendall(server_cmd_msg) #循环send数据,直到数据全部发送成功 conn.close()
server.close()

客户器端

import socket
import struct
client = socket.socket()
server_ip_port = ("192.168.15.33",8001)
client.connect(server_ip_port) while 1:
msg = input("请输入要执行的命令>>>>>")
client.send(msg.encode("utf-8")) from_server_msglen = client.recv(4)#先接受服务端要发送给我的数据长度,前四个字节,固定的
unpack_len_msg = struct.unpack("i",from_server_msglen)[0] recv_msg_len = 0
all_msg = b""
while recv_msg_len < unpack_len_msg:
every_recv_date = client.recv(1024)
all_msg += every_recv_date #将每次接收到的数据进行拼接和统计
recv_msg_len += len(every_recv_date) #对每次接受到的数据进行累加 print(all_msg.decode("gbk"))
client.close()

最新文章

  1. ant使用指南详细入门教程
  2. python常见错误总结
  3. 图像特征提取三大法宝:HOG特征,LBP特征,Haar特征
  4. Laravel教程:laravel 4安装及入门
  5. Monkey学习笔记&lt;四&gt;:Monkey服务器命令
  6. BZOJ 3196
  7. 笔记整理——linux程序设计
  8. JPA、Hibernate框架、通用mapper
  9. 解决Jenkins用shell脚本部署后,Jenkins自动杀掉启衍生出来的守护进程
  10. [MySQL]多表关联查询技巧
  11. 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) ...ubuntu 18.04 安装vim遇到的错误
  12. poj2965 【枚举】
  13. xml的解析方式的简介
  14. 802.11 af 要点
  15. SQLServer&#160;学习笔记之超详细基础SQL语句&#160;Part&#160;7
  16. Security5:授予权限
  17. 国内首款 FPGA 云服务器,性能是通用 CPU 服务器 30 倍以上
  18. LightOJ 1355 :Game of CS(树上green博弈)
  19. 洛谷P3396哈希冲突
  20. linux centos7 erlang rabbitmq安装

热门文章

  1. jvm结构
  2. pycharm 新建文件自动添加表头信息
  3. LeetCode算法题-Find the Difference(Java实现-五种解法)
  4. java实现支付宝支付及退款(一)
  5. Understanding Docker
  6. js data日期初始化的5种方法 [转]
  7. 设计模式のStrategyPattern(策略模式)----行为模式
  8. 在Ubuntu上安装Jenkins
  9. [Python] 练习代码
  10. hive复杂类型实战