当前位置: 首页 > news >正文

socket接受大的数据

socket_server_ssh:

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)
        if not data:
            print("客户端已断开")
            break
        print("执行指令:",data)
        cmd_res = os.popen(data.decode()).read() #接受字符串,执行结果也是字符串
        print("before send ",len(cmd_res))
        if len(cmd_res) ==0:
            cmd_res = "cmd has no output..."
        conn.send( str(len(cmd_res.encode())).encode("utf-8") )  #先发大小给客户端
        client_ack = conn.recv(1024)  # wait client to confirm
        conn.send(cmd_res.encode("utf-8"))
        print("send done")
server.close()

 

socket_server_client:

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)
    client.send("准备好接收了,可以发了".encode("utf-8"))
    received_size = 0
    received_data = b''
    while received_size < int(cmd_res_size.decode()):
        data = client.recv(1024)
        received_size += len(data) #每次收到的有可能小于1024,所以必须用len判断
        received_data += data
    else:
        print("cmd res receive done...",received_size)
        print(received_data.decode())

client.close()

 

转载于:https://www.cnblogs.com/Cohen/p/8711153.html

相关文章:

  • redis开启远程访问
  • AE与AO的区别
  • Java 并发集合的实现原理
  • 如何利用C++搭建个人专属的TensorFlow
  • 基于HAProxy的高性能缓存服务器nuster
  • [20171106]配置客户端连接注意.txt
  • 分享Silverlight/WPF/Windows Phone一周学习导读(07月25日-07月31日)
  • Python类的一般形式和继承
  • ArcGIS 10.5 新功能
  • 局域网内手机播放视频
  • Ubuntu Server 10.10 操作手记
  • JavaScript 基本功--面试宝典
  • Oracle Number用法
  • Linux下随机10字符病毒的清除
  • wbadmin执行备份命令
  • [iOS]Core Data浅析一 -- 启用Core Data
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • Java精华积累:初学者都应该搞懂的问题
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • Python利用正则抓取网页内容保存到本地
  • scala基础语法(二)
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • 包装类对象
  • 基于遗传算法的优化问题求解
  • 设计模式 开闭原则
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 学习HTTP相关知识笔记
  • #define与typedef区别
  • #HarmonyOS:软件安装window和mac预览Hello World
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (39)STM32——FLASH闪存
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (8)STL算法之替换
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (C语言)字符分类函数
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (附源码)计算机毕业设计ssm电影分享网站
  • (黑马C++)L06 重载与继承
  • (学习日记)2024.01.09
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • *1 计算机基础和操作系统基础及几大协议
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .form文件_一篇文章学会文件上传
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .NetCore项目nginx发布
  • .NET中 MVC 工厂模式浅析
  • @requestBody写与不写的情况
  • [04]Web前端进阶—JS伪数组
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]