Python socket ssh接收大数据
通过socket连续接收返回数据
- Server服务端
import socket,os
server = socket.socket()
server.bind(('localhost',9999)) server.listen() while True:
conn,addr = server.accept()
print("new conn:",addr)
while True:
data = conn.recv(1024) #第一次没发完会放到io缓冲区
if not data:
print("客户端已断开")
break
print("执行指令",data.decode())
cmd_res = os.popen(data.decode()).read() #接收字符串
print("before send",len(cmd_res))
if len(cmd_res) ==0: #客户端断开后会,服务端收到的是空,数据为0
cmd_res = "cmd has no output..."
conn.send(str(len(cmd_res.encode())).encode("utf-8")) #先发大小给客户端
conn.send(cmd_res.encode("utf-8"))
server.close()
- Clinet客户端
import socket
client = socket.socket()
client.connect(('localhost',9999)) while True:
cmd = input(">>:").strip()
if len(cmd) == 0:continue
client.send(cmd.encode("utf-8"))
cmd_res_size = client.recv(1024) #接收命令结果长度
print("命令结果大小:",cmd_res_size)
received_size = 0
received_data = b'' #创建空的b类型文件
while received_size < int(cmd_res_size.decode()): #如果没传完就继续循环
data = client.recv(1024) #收数据
received_size += len(data) #每次收到的有可能小于1024,所以必须用len判断。
received_data += data #将数据叠加到b文件内
else:
print("cmd res receive done",received_size)
print(received_data.decode())
client.close()
Python socket ssh接收大数据的更多相关文章
- 【python】-- Socket接收大数据
Socket接收大数据 上一篇博客中的简单ssh实例,就是说当服务器发送至客户端的数据,大于客户端设置的数据,则就会把数据服务端发过来的数据剩余数据存在IO缓冲区中,这样就会造成我们想要获取数据的完整 ...
- 网络编程基础【day09】:socket接收大数据(五)
本节内容 1.概述 2.socket接收大数据 3.中文字符的坑 一.概述 上篇博客写到了,就是说当服务器发送至客户端的数据,大于客户端设置的数据,则就会把数据服务端发过来的数据剩余数据存在IO缓冲区 ...
- Python Socket请求网站获取数据
Python Socket请求网站获取数据 ---阻塞 I/O ->收快递,快递如果不到,就干不了其他的活 ---非阻塞I/0 ->收快递,不断的去问,有没有送到,有没有送到,. ...
- python、Java、大数据和Android的薪资如何?
莫名其妙,从去年年底开始,Python这个东西在中国,突然一下子就火起来了,直至现在,他的热度更是超越了java,成为软件工程师最为关注的话题.Python之所以能火起来,很大一方面是因为大数据.人工 ...
- 网络编程 - socket接收大数据
通过socket,实现客户端发送命令,将服务端执行出的结果,反回到客户端,主要4个步骤:1.服务端返回数据: 2.服务端返回数据的大小: 3.客户端接收返回数据的大小: 4.客户端按返回数据大小接收数 ...
- 使用tar+pigz+ssh实现大数据的高效传输
以前我们跨主机拷贝大数据的时候,比如要拷贝超过100GB的mysql原始数据,我们通常的做法如下: 在源端打包压缩为tar.gz文件 采用scp或者rsync等方式拷贝到目标主机 在目标主机解压文件 ...
- Socket接收大数据的方法
byte[] buffer = new byte[BufferSize]; int bytesRead; // 读取的字节数 MemoryStream msStream = new MemoryStr ...
- 怎样保证socket.recv接收完数据
最近在使用python进行网络编程开发一个通用的tcpclient测试小工具.在使用socket进行网络编程中,如何判定对端发送一条报文是否接收完成,是进行socket网络开发必须要考虑的一个问题.这 ...
- Delphi---TServerSocket和TClientSocket发送和接收大数据包
https://www.cnblogs.com/zhangzhifeng/p/6065244.html TServerSocket和TClientSocket用非阻塞模式发送和接收比较大的数据时,可能 ...
随机推荐
- hdu 2098 分拆素数和(素数)
分拆素数和 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- javascript 缩写技巧
19种JS高(炫)效(技)缩写法 https://segmentfault.com/a/1190000011229633
- 22.1 、react生命周期(一)
在每个react组件中都有以下几个生命周期方法~我们需要在不同阶段进行讨论 组件生命周期概述 1.初始化 在组件初始化阶段会执行 constructor static getDerivedStateF ...
- MongoDB数据库去重
查询: db.patents_texts.aggregate([ { $group:{_id:{Patent_num:'$Patent_num',Patent_name:'$Patent_name'} ...
- mui 普通新闻文字列表 图文新闻列表
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- js的运用1
1.parselnt() 2.parsefloat() 遇到第一个字节是非数字就结束了. 3. var a="hello world" a这个变量是字符串了,对于里面 ...
- sqoop/1.4.6/下载
http://archive.apache.org/dist/sqoop/1.4.6/
- SpringBoot:四种读取properties文件的方式
前言 在项目开发中经常会用到配置文件,配置文件的存在解决了很大一份重复的工作.今天就分享四种在Springboot中获取配置文件的方式. 注:前三种测试配置文件为springboot默认的applic ...
- ios安装ipa与安卓安装apk
ideviceinstaller -i .ipa包所在的路径 环境搭建:Mac上安装brew(brew里面有很多命令,可以安装自己想用的命令) 安装命令如下:curl -LsSf http://git ...
- C#编程基础(简单概述与理解)
1.C#变量和数据输入 C#常用到的几个数据类型: 整型:int 说明:32位有符号整数 范围:-2³¹~2³¹-1 浮点型:double 说明:64位双精度浮点数 范围:±5.0×10-﹣³²~± ...