zoukankan      html  css  js  c++  java
  • day30 模拟ssh远程执行命令/解决粘包执行问题/粘包终极解决方案/tcp的优化算法以及粘包问题分析

    上节课复习

    1、什么是套接字:

       套接字位于应用层与传输层之间,将传输层一下的协议都封装成了接口

       对于应用层来说只需要调用套接字的接口,写出的程序自然是遵循tcp或udp...

    2、c/s

      server必须遵循:

      1、稳定运行,对外一直提供服务

      2、服务必须绑定IP和端口

    subprocess模块

    #subprocess 模块
    import subprocess  #这个模块用来执行系统命令  subprocess子进程的意思
    import time
    obj=subprocess.Popen(
        'tasklist',
         shell=True,
         stdout=subprocess.PIPE,
         stderr=subprocess.PIPE
    )
    # print(obj)#得到一个内存地址
    # time.sleep(10)#可以看到进程  子进程结束  父进程在睡10秒
    #这一步代表生了个儿子出来
    #第一个参数必须是字符串形式的命令 第二个必须加shell=True   shell的意思是命令解释器 这一步其实在调命令解释器
    #stdout  代表命令正确运行的结果
    #stderr  代表命令错误运行的结果
    #管道其实就是进程与进程之间共享数据的地方
    #正确的命令从管道里面输给父进程,让父进程使用
    #错误的结果也往管道里面丢 这样取得时候就有针对性
    stdout_res=obj.stdout.read()#从正确管道读结果
    print(stdout_res.decode('gbk'))#bytes类型
    
    #总结
    
    #subprocess模块的应用
    

    报头是对数据加译描述的

    报头要固定长度为的是收数据的时候知道报头多长

    totalsize是报头和数据长度结合吗??

    struct模块

    该模块可以把一个类型,如数字转成固定长度的bytes类型

    import struct
    a = struct.pack('i',848544)#i表示类型
    print(a,len(a))

    什么是报头?报头是对数据有描述性的功能。

  • 相关阅读:
    屏幕取色器colorspy
    js监控按键
    修改硬件信息小工具
    C#SendKeys的用法
    错误分析:程序集未标记为可序列化
    C#xml反序列化
    office2010激活工具
    截图软件
    C#画图
    .net中SQL防注入代码
  • 原文地址:https://www.cnblogs.com/wangmiaolu/p/9285498.html
Copyright © 2011-2022 走看看