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'))