服务器端

import socket
import subprocess
import struct
server = socket.socket()
ip_port = ("192.168.15.33",8001)
server.bind(ip_port)
server.listen()
conn,addr = server.accept()while 1:print("等待接收消息...")from_client_cmd = conn.recv(1024).decode("utf-8")#接收客户端消息print(from_client_cmd)sub_obj = subprocess.Popen(   #通过subprocess模块执行服务端指令,并拿到指令结果from_client_cmd,            #客户端指令shell = True,stdout = subprocess.PIPE,   #标准输出:正确指令的执行结果stderr = subprocess.PIPE,   #标准错误输出:错误指令的执行结果
    )server_cmd_msg = sub_obj.stdout.read()#server_cmd_msg = sub_obj.stderr.read() #接收到的返回信息是bytes类型,并且windoes系统的默认编码为gbkcmd_msg_len = len(server_cmd_msg) #计算你要发送的数据长度msg_len_stru = struct.pack("i",cmd_msg_len)#先对数据长度进行打包,打包成4个字节的数据,目的是为了和你将要发送的数据拼接在一起,就像我们自制一个消息头.conn.send(msg_len_stru)        #首先发送打包成功后的那4个字节的数据conn.sendall(server_cmd_msg)   #循环send数据,直到数据全部发送成功

conn.close()
server.close()

客户器端

import socket
import struct
client = socket.socket()
server_ip_port = ("192.168.15.33",8001)
client.connect(server_ip_port)while 1:msg = input("请输入要执行的命令>>>>>")client.send(msg.encode("utf-8"))from_server_msglen = client.recv(4)#先接受服务端要发送给我的数据长度,前四个字节,固定的unpack_len_msg = struct.unpack("i",from_server_msglen)[0]recv_msg_len = 0all_msg = b""while recv_msg_len < unpack_len_msg:every_recv_date = client.recv(1024)all_msg += every_recv_date  #将每次接收到的数据进行拼接和统计recv_msg_len += len(every_recv_date) #对每次接受到的数据进行累加print(all_msg.decode("gbk"))
client.close()

转载于:https://www.cnblogs.com/sdadx/p/9049730.html

Python中Socket粘包问题的解决相关推荐

  1. 关于php中Socket粘包问题的3种解决方案,不断提升质量

    在 Java 语言中,传统的 Socket 编程分为两种实现方式,这两种实现方式也对应着两种不同的传输层协议:TCP 协议和 UDP 协议,但作为互联网中最常用的传输层协议 TCP,在使用时却会导致粘 ...

  2. 自定义Udp/Tcp协议,通信协议Socket/WebSocket,IM粘包、分包解决等(2),ProtocolBuffer

    > 自定义Udp/Tcp协议/通信协议(Java/C):自定义构建和解析IM协议消息:IM自定义UDP通信协议   类似于网络通信中的TCPIP协议一般,比较可靠的通信协议往往包含有以下几个组成 ...

  3. python tcp处理_python中TCP粘包问题解决方案

    TCP协议中的粘包问题 1.粘包现象 基于TCP写一个远程cmd功能 #服务端 importsocketimportsubprocess sever=socket.socket() sever.bin ...

  4. python 套接字 struck_Python socket粘包问题(最终解决办法)

    套接字: 就是将传输层以下的协议封装成子接口 对于应用程序来说只需调用套接字的接口,写出的程序自然是遵循tcp或udp协议的 实现第一个功能个: 实现:通过客户端向服务端发送命令,调取windows下 ...

  5. golang中tcp socket粘包问题和处理

    http://www.01happy.com/golang-tcp-socket-adhere/ 在用golang开发人工客服系统的时候碰到了粘包问题,那么什么是粘包呢?例如我们和客户端约定数据交互格 ...

  6. socket Php 粘包,python3 tcp的粘包现象和解决办法解析

    这篇文章主要介绍了python3 tcp的粘包现象和解决办法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 服务器端 import socket ...

  7. C# socket通信 接收缓冲区大小设置,以及粘包问题的解决

    C# socket通信 接收缓冲区大小,以及粘包问题的解决 一. Socket接收缓冲区无论: 1.buffer设置有多大: 2.同步接收还是异步接收: 3.发送超过 43690 也就是 42KB的字 ...

  8. 解决VS Code连接远程服务器使用Python中的matplotiib包画图无法显示的问题

    项目场景: 在使用VS Code连接远程服务器使用Python中的matplotiib包画图时,会出现无法显示的问题 问题描述: 在直接执行画图程序时,会报错:RuntimeError: Invali ...

  9. Python中socket解读

    操作系统底层原理 操作系统:(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在"裸机"上的最基本的系统软件,任何其他软件都必须 ...

  10. Python学习,python中socket解读

    操作系统底层原理 操作系统:(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在"裸机"上的最基本的系统软件,任何其他软件都必须 ...

最新文章

  1. 2021年大数据常用语言Scala(八):基础语法学习 循环
  2. Spring AOP动态代理-切面
  3. C函数 mktemp
  4. ubuntu16.04安装torch
  5. Windows phone 应用开发[3]-UI 设计
  6. Python学习笔记:偏函数
  7. 搜狗词库爬虫(2):基础爬虫框架的运行流程
  8. linux container 原理,容器概念与Linux Container原理
  9. 不附加数据库 ASP.NET调用.sql文件
  10. 走向TensorFlow2.0,一步到位
  11. 七夕祝福网页制作_啥?七夕过了你还不知道自己为啥单身??
  12. 华为hcia认证有哪些方向?华为hcia认证哪些方向比较好,值得推荐?
  13. WebIM Vue Demo 使用文档
  14. halcon入门之_提取遥控器字符并且写入txt文本
  15. inv如何用计算机计算,计算器INV是用那个键表示的
  16. ios12微信H5输入框软键盘关闭后,页面无法回到正常位置
  17. 10年后重温《我奋斗了18年才和你坐在一起喝咖啡》
  18. Oracle Namespace 说明
  19. 影评《北京爱情故事》告诉我们一些事
  20. Android卡顿优化分析

热门文章

  1. 065_VFPage中CallBack回调函数的解释
  2. 经典股票图形:蛟龙出海
  3. 判断字符串括号是否闭合(){}[]
  4. linux增加虚拟内存
  5. WinHTTP Web Proxy Auto-Discovery Service
  6. SpringMVC之二:配置 Spring MVC
  7. Python Tutorial 实践(2)
  8. 计算机网络和lnternet的课件,Computer Networks and Internets《计算机网络与因特网》课件.ppt...
  9. Linux系统编程—— fork() 函数详解
  10. reactor ---- 反应堆模型