# !/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2017/8/22 16:14
# @Author : Mr_zhang
# @Site :
# @File : server.py
# @Software: PyCharm from socket import *
import subprocess
import struct
phone = socket(AF_INET,SOCK_STREAM)
phone.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)
phone.bind(('127.0.0.1',8080))
phone.listen(7) print('startting...')
while True:
conn,client_addr = phone.accept() #等待客户端发送数据 ======>接收
print('------->',conn,client_addr)
while True:
try:
cmd = conn.recv(1024)
if not cmd:break
res = subprocess.Popen(cmd.decode('utf-8'),shell=True, #将普通字符串转化为系统命令
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
stdout = res.stdout.read() #输入正确读取的内容
stderr = res.stderr.read() #输入错误读取的内容 header = struct.pack('i',len(stdout)+len(stderr)) #根据长度制作报头
conn.send(header) #发送报头去探路
conn.send(stdout)
conn.send(stderr)
except Exception:
break
conn.close()
phone.close()

 


#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2017/8/22 16:14
# @Author : Mr_zhang
# @Site :
# @File : client.py
# @Software: PyCharm from socket import *
import struct
phone = socket(AF_INET,SOCK_STREAM)
phone.connect(('127.0.0.1',8080)) while True:
cmd = input('>>:').strip() #输入的命令
if not cmd:continue
phone.send(cmd.encode('utf-8')) #encode之后发送出去 header_struct = phone.recv(4) #接收的报头信息
unpack_res = struct.unpack('i',header_struct) #将字节流转化为Python数据类型
total_size = unpack_res[0] #拆包之后是元组,取第一项 recv_size = 0 #接收道德数据,刚开始为0
total_data = b'' #初始数据
while recv_size < total_size: #接收到的数据<总共的数据
recv_data = phone.recv(1024) #每次接收的数据
recv_size+=len(recv_data) #接收到的数据=每次接收的收据+上次接收的数据
total_data+=recv_data #最后的总数据
print(total_data.decode('gbk')) #转换为本机电脑的编码
phone.close()

  

最新文章

  1. SE78、SWM0
  2. Shell之数学计算
  3. 在GitHub上建立个人主页的方法(转载)
  4. SharePoint 2013 开发——APP开发的考虑和建议
  5. Viewpager+Fragment出现空白页面的问题
  6. sqlserver 理解数据集
  7. zabbix 四张大表分区
  8. 为什么我要使用一个20年前的IBM老键盘
  9. ZendFramework2学习笔记 json和ajax
  10. 学问Chat UI(3)
  11. pdf文件下载水印添加的中文与空格问题解决
  12. [SHOI2008]仙人掌图 II——树形dp与环形处理
  13. poj 3126 Prime Path bfs
  14. (七)JavaScript 函数
  15. redhat开启端口
  16. linux windows安装python的最佳方式,miniconda
  17. 将文本(lrc,txt)文件转换成UTF-8格式
  18. Hypergeometric distribution
  19. XML映射配置文件
  20. hasura graphql-engine v1.0.0-alpha30 版本新功能介绍

热门文章

  1. 201521123108 《Java程序设计》第八周学习总结
  2. 201521123009 《Java程序设计》第7周学习总结
  3. 12个Sublime Text应用技巧和诀窍
  4. 201521123101 《Java程序设计》第11周学习总结
  5. 框架应用:Spring framework (五) - Spring MVC技术
  6. 适用初学者:vue2.0构建单页应用最佳实战
  7. Ubuntu16.04安装piwik3.0.1
  8. [js高手之路] 设计模式系列课程 - 迭代器(1)
  9. ArcGIS连带文字注记导出为CAD格式
  10. 判断字符串中是否包含指定的内容&amp;&amp;字符串截取方法比较说明