粘包解决高端_Server
from socket import * #导入套接字模块的所有命令
import subprocess #导入subprocess模块,用于执行命令行
import struct #导入struck模块,用于封装数据流长度 ip_prot = ('192.168.55.1',8000) #创建ip地址和端口号
back_log = 5 #创建监听链接数
buffer_size = 1024 #创建可接收字节数 tcp_Server = socket(AF_INET,SOCK_STREAM) #创建服务器套接字:AF_INET--IP4协议 SOCK_STREAM--流式传输
tcp_Server.bind(ip_prot) #绑定服务端端口号
tcp_Server.listen(back_log) #创建监听链接
while True: #创建服务端大循环机制
coon,addr = tcp_Server.accept() #准备接收数据,coon:接收的数据;addr:接收客户端地址
print('检测到在途的链接打击:',addr) #打印接收的客户端地址
while True: #内部逻辑小循环
try: #捕捉可能发生的异常,防止程序崩溃
cmd = coon.recv(buffer_size) #按照buffer_size的字节大小接收服务端数据
if not cmd :break #如果数据不为空(即接收到数据信息)
print('收到来自客户端%s的命令%s'%(addr,cmd)) #打印客户端的地址及命令内容
# ——————————————————————#
#以下内容暂未理解,后续更新中...
res = subprocess.Popen(cmd.decode('utf-8'),shell=True, #将客户端的缓存信息取出放入命令解释器??
stderr=subprocess.PIPE,
stdout=subprocess.PIPE,
stdin=subprocess.PIPE,)
err = res.stderr.read()
if err:
cmd_res = err
else:
cmd_res = res.stdout.read() if not cmd_res:
cmd_res = '执行成功'.encode('gbk')
#以上内容暂未理解,后续更新中...
#——————————————————————#
length = len(cmd_res) #设置执行命令后的长度
data_length = struct.pack('i',length) #设置数据长度,并打包
coon.send(data_length) #发送数据长度
coon.send(cmd_res) #发送命令执行输出
except Exception as e: #捕捉异常产生的异常值
print('当前发生的错误是%s'%e) #打印异常值
break #一旦产生异常就终止程序
粘包解决高端_Server的更多相关文章
- 粘包解决高端_Client
from socket import * #导入套接字模块的所有命令import struct #导入struck模块,用于封装数据流长度# from functools import partial ...
- Python socket粘包解决
socket粘包: socket 交互send时,连续处理多个send时会出现粘包,soket会把两条send作为一条send强制发送,会粘在一起. send发送会根据recv定义的数值发送一个固定的 ...
- Python进阶----粘包,解决粘包(旗舰版)
Python进阶----粘包,解决粘包(旗舰版) 一丶粘包 只有TCP有粘包现象,UDP永远不会粘包 什么是粘包 存在于客户端接收数据时,不能一次性收取全部缓冲区中的数据.当下一次再有数据来时 ...
- tcp套接字粘包解决办法
粘包只会出现在tcp,udp传输不会产生粘包现象.解决粘包的原理就是服务器预先向客户端发送客户端即将获取文件的大小. 第一版解决方案: 服务器: # Author : Kelvin # Date : ...
- 基于tgp协议的套接字的 粘包解决
客户端 import socket import struct import json phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM ...
- tcp粘包解决
import socket import hashlib import subprocess import struct phone = socket.socket(socket.AF_INET,so ...
- Day 6-3 粘包现象
服务端: import socket import subprocess phone = socket.socket(family=socket.AF_INET, type=socket.SOCK_S ...
- python3全栈开发-什么是粘包、粘包现象、如何解决粘包
一.粘包现象 让我们基于tcp先制作一个远程执行命令的程序(1:执行错误命令 2:执行ls 3:执行ifconfig) 注意注意注意: res=subprocess.Popen(cmd.decode( ...
- 解决tcp粘包问题
目录 什么是粘包(演示粘包现象) 解决粘包 实际应用 什么是粘包 首先只有tcp有粘包现象,udp没有粘包 socket收发消息的原理 发送端可以是一K一K地发送数据,而接收端的应用程序可以两K两K地 ...
随机推荐
- 路飞学城Python-Day153
Scrapy核心组件
- Python数据分析2------数据探索
一.数据探索 数据探索的目的:及早发现数据的一些简单规律或特征 数据清洗的目的:留下可靠数据,避免脏数据的干扰. 两者没有严格的先后顺序,经常在一个阶段进行. 分为: (1)数据质量分析(跟数据清洗密 ...
- 安装Mysql的一些问题,比如Net Connect 卸载不掉,注册表相关操作
我安装mysql用了一段时间后卸载了,在安装就发现安装不了了,原因就是卸载的时候Net Connetc无法卸载,我试了一个月也没有解决后来百度各种还是没有办法解决.于是就尝试自己手动卸载注册表.在“开 ...
- POJ 3281 Dining[网络流]
Cows are such finicky eaters. Each cow has a preference for certain foods and drinks, and she will c ...
- WEBGL学习【三】颜色选择
<html lang="zh-CN"> <head> <title>NeHe's WebGL</title> <meta ch ...
- MVC架构之delegate
Qt的MVC架构可以实现很多数据显示的功能,本次主要对代理进行一个总结: 重实现QStyledItemDelegate类,实现自定义类. (1)ComboxDelegate.h #ifndef COM ...
- leetCode笔记--binary tree
993. Cousins in Binary Tree In a binary tree, the root node is at depth 0, and children of each dept ...
- C# string bytes互转
string str = "spike"; byte[] bytes = System.Text.Encoding.Default.GetBytes(str); foreach ( ...
- 绘图-CAD-改快捷键
CAD的快捷键应该在左手边,左手不离开键盘,右手不离开鼠标,这样的操作才有效率. arc 圆弧命令原命令是ARC Q 圆(CIRCLE) C 原快捷键C被定义为COPY,Q的形状类似圆,只是多了一个尾 ...
- 洛谷—— P1189 SEARCH
https://www.luogu.org/problem/show?pid=1189 题目描述 年轻的拉尔夫开玩笑地从一个小镇上偷走了一辆车,但他没想到的是那辆车属于警察局,并且车上装有用于发射车子 ...