码迷,mamicode.com
首页 > 其他好文 > 详细

py 的 第28 天

时间:2018-09-06 18:13:48      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:unp   最好   highlight   粘包   shel   一个   stdout   utf8   touch   

ssh

 import   subprocess

 

 import socket,subprocess
server = socket.socket()

 server.connect((‘127.0.0,1‘,8008))

 a=server.recv(1024)
 res=subprocess.Popen("dir",
                      shell=True,
                      stderr=subprocess.PIPE,
                      stdout=subprocess.PIPE)

print(res.stdout.read().decode("gbk"))

 这个还不是很懂,老师也没有怎么说,关于true   err是关于错误,这两个后面赋的值都是一样的,只是打印出的可能不同

 

粘包的问题   发东西的时候不确定发的字节有多长,接收的时候最好一次1024 一次一kb 就够了,太多了容易内存爆炸,我们先写一个头,确定一下他是多长的数字,然后比对持续接收

import  struct
    c=‘aaaa‘.encode(‘utf8‘)          #这是把你要传送的文件转换成utf8的字节
    a=struct.pack(‘i‘,len(c))         #这个是struct模块中的i方法 把一个文件的字节数,转化成一个4位字节的,转完在接收的那边再转换回来
    变量.send(a)                         #先发一下这个头4个字,对面第一次只接收4个字节就ok
    变量.send(c)                         #再发送一下文件的字节格式





import  struct
    touch=conn.recv(4)  #先接收前四个
    toushu1=struct.unpack(‘i‘,toushu)[0]  #这个转4位数,回来的是个元组,我们要取第一位
    
    r=0
    c=b‘’       #接到的文件是字节,还没有转码,定义一个空字节,一点一点加到这里面,然后一起转码

while r < toushu1  #如果这个0,小于字节数,就往下走
    neirong=conn,recv(1024) #如果小就接收1024过来 ??接来的是字节
    r+=len(neurona)     #每次都把这个0往上加,直到0等于字节长度
    c+=neirong            #每次都在空字节里加入 字节在一起转码
        下面再操作的时候,操作这个c就行了  把c utf8转码(c.decode(‘utf8‘))

 

py 的 第28 天

标签:unp   最好   highlight   粘包   shel   一个   stdout   utf8   touch   

原文地址:https://www.cnblogs.com/Mrszhao/p/9599268.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!