一、subprocess模块  #可以通过传递字符串命令,帮你去实现一些操作系统的命令。

import subprocess
res = subprocess.Popen("dir",
shell=True,
stderr=subprocess.PIPE,
stdout=subprocess.PIPE
)
ret = res.stdout.read().decode("gbk")
print(ret)

二、struct模块

import struct
res = struct.pack("i",6465789)  #"q",8个字节
print(res) #b'\xfd\xa8b\x00'
print(len(res)) #
ret = struct.unpack("i",res)
print(ret) #(6465789,)
print(ret[0]) #

三、ssh模型(黏包)

server

import subprocess
import socket
import struct server = socket.socket()
server.bind(("127.0.0.1",8101))
server.listen(5)
while 1:
conn,addr = server.accept()
while 1:
try:
server_cmd = conn.recv(1024).decode("utf8")
res = subprocess.Popen(server_cmd,
shell=True,
stderr=subprocess.PIPE,
stdout=subprocess.PIPE
)
if server_cmd == b"exit":
break
response1 = res.stdout.read()
response2 = res.stderr.read()
if response2:
pack = struct.pack("i",(len(response2)))
conn.send(pack)
conn.send(response2)
else:
pack = struct.pack("i",(len(response1)))
conn.send(pack)
conn.send(response1)
except Exception as e:
break
conn.close()

client

import socket
import struct
client = socket.socket()
client.connect(("127.0.0.1",8101))
while 1:
client_cmd = input("请输入您的命令:")
client.send(client_cmd.encode("utf8"))
if client_cmd == "exit":
break
if client_cmd == "":
continue
pack = client.recv(4)
print(pack)
data_length = struct.unpack("i",pack)[0]
print(data_length)
recv_data_length = 0
recv_data = b"" while recv_data_length < data_length:
data = client.recv(1024)
recv_data_length += len(data)
recv_data += data print(recv_data.decode("gbk")) client.close()

最新文章

  1. Linq读取XML
  2. divmod(a,b)函数是实现a除以b,然后返回商与余数的元组、eval可以执行一个字符串形式的表达式、exec语句用来执行储存在字符串或文件中的Python语句
  3. 30天C#基础巩固------集合,File(文件操作 ),Encoding处理字符集
  4. 硬连接与软连接,inode与links
  5. Codeforces Round #282 Div.1 B Obsessive String --DP
  6. soapui中文操作手册(四)----MOCK服务
  7. Codeforces Gym 100637A A. Nano alarm-clocks 前缀和处理
  8. 可复用的js效果
  9. jenkins相关
  10. oracle10g如何配置客户端
  11. Android模拟器使用教程
  12. Git 笔记三 Git的初步使用
  13. spring boot MySQL极简封装
  14. 在Linux系统使用VMware安装虚拟机
  15. 【渗透技术】渗透测试技术分析_TomCat
  16. CSS之精灵图(雪碧图)与字体图标
  17. java thread 线程40个问题汇总
  18. Spring动态数据源实现读写分离
  19. jquery validate使用笔记
  20. 子类的实例给父类的引用 在编译器时候 jvm认为他是父类的实例 只会去寻找父类里面的方法 如果调用子类里面的属性或者方法时候 jvm会认为该引用并没有 所以会报错

热门文章

  1. Linux文件误删恢复
  2. python 线程队列PriorityQueue(优先队列)(37)
  3. 线性表——顺序表的实现与讲解(C++描述)
  4. LeetCode 142. 环形链表 II(Linked List Cycle II)
  5. [HTTPS] - 请求API失败(Could not create SSL/TLS secure channel)之解决
  6. java当中JDBC当中请给出一个sql server的helloworld例子
  7. VMware虚拟机(Ubuntu)通过主机代理实现——浏览器+终端访问外网
  8. 写Markdown博客时遇到的一些问题
  9. Ajax跨越请求失败,解决
  10. WebApi如何传递参数