我正在尝试解码通过TCP连接接收到的数据。数据包很小,不超过100字节。然而,当它们很多的时候,我会收到一些连接在一起的包。有没有办法防止这种情况发生?我用的是蟒蛇

我已经尝试分离数据包,我的来源在下面。数据包以stx字节开始,以etx字节结束,stx后面的字节是数据包长度(小于5的数据包长度无效),校验和是etx之前的最后一个字节。

def decode(data):

while True:

start = data.find(STX)

if start == -1: #no stx in message

pkt = ''

data = ''

break

#stx found , next byte is the length

pktlen = ord(data[1])

#check message ends in ETX (pktken -1) or checksum invalid

if pktlen < 5 or data[pktlen-1] != ETX or checksum_valid(data[start:pktlen]) == False:

print "Invalid Pkt"

data = data[start+1:]

continue

else:

pkt = data[start:pktlen]

data = data[pktlen:]

break

return data , pkt

我就是这样用的

#process reports

try:

data = sock.recv(256)

except: continue

else:

while data:

data, pkt = decode(data)

if pkt:

process(pkt)

另外,如果数据流中有多个数据包,最好将这些数据包作为列表的集合返回,还是只返回第一个数据包

我不太熟悉python,只有c,这个方法可以吗?任何建议都将是最受欢迎的。提前谢谢

谢谢

python拦截tcp数据包,使用python解码TCP数据包相关推荐

  1. netty的编解码、粘包拆包问题、心跳检测机制原理

    文章目录 1. 编码解码器 2. 编解码序列化机制的性能优化 3. Netty粘包拆包 4. Netty心跳检测机制 5. Netty断线自动重连实现 1. 编码解码器 当你通过netty发送或者接受 ...

  2. 【Android RTMP】音频数据采集编码 ( AAC 音频格式解析 | FLV 音频数据标签解析 | AAC 音频数据标签头 | 音频解码配置信息 )

    文章目录 安卓直播推流专栏博客总结 一. AAC 音频格式解析 二. FLV 音频数据标签解析 1. 分析 FLV 格式中的 AAC 音频格式数据 2. AAC 音频特殊配置 3. AAC 音频数据标 ...

  3. python拦截修改数据包_会Python?那么你一定要试一试mitmproxy

    mitmproxy 是一款工具,也可以说是 python 的一个包,使用这个工具可以在命令行上进行抓包(现在也可以在web页面上查看上抓的数据包了),还可以对所抓到的包进行脚本处理,非常有用. 和 f ...

  4. python拦截数据包_httphttps,python抓包知多少

    原标题:http&https,python抓包知多少 在有些情景下,需要拦截所有的http包和https数据包,http包很好抓,但是https包相对比较复杂,在此文章中,主要介绍http和h ...

  5. 【Python金融量化 1- 100 】了解Python及常用财经数据接口包

    了解Python及常用财经数据接口包 背景介绍: Python是一种计算机程序设计语言,它诞生于20世纪90年代初,正在逐渐被广泛运用中. Python的创始人是Guido van Rossum.相传 ...

  6. python json数据格式数组内元素递增赋值_利用Python实现JSON格式数据的编码与解码操作...

    导读 JSON (全称:JavaScript Object Notation )是一种轻量级的数据交换格式,所谓的轻量级,是与 XML 数据结构相比而言的,在描述相同的数据下,JSON 所需的字符比X ...

  7. Python中使用sentinelsat包自动下载Sentinel系列数据

    Python中使用sentinelsat包自动下载Sentinel系列数据 前言 普通下载 使用工具批量下载Sentinel 数据 使用SNAP批量下载 第三方软件或网站批量下载 Sentinel-1 ...

  8. JAVA三维可视化组件:Matplot 3D for JAVA(V3.0) 一个纯JAVA开发的科学数据可视化组件包 类似 Python 的matplotlib(含示例代码)

    目录 概述 组件下载及项目地址 效果展示和示例代码 概述 Matplot3D for JAVA(V3.0) 是一个基于JAVA SE 1.8环境开发的三维图形图表组件. 组件由纯JAVA SE 实现( ...

  9. python我想对你说_python学习第4天----is和==区别、小数据池、编码解码

    1.is和==的区别 1)==比较的是左右两边的值,无论是字符串.数字.列表,元组.若两边的值相等,则返回True a = "zdz"b= "zdz" prin ...

最新文章

  1. 方格分割 蓝桥杯心得
  2. 2010.3.28 OA 项目组工作报告
  3. 8 关于数据仓库维度数据处理的方法探究系列——父子维
  4. 开发日记-20190330
  5. DNS之三 辅助区域和名称解析过程
  6. implementation of CreateBindingContext
  7. c语言程序设计俄罗斯方块PPT,俄罗斯方块游戏:C语言程序设计初步感受
  8. centos 安装trace_前期的准备工作-MacOS Mojave 10.14.3 下安装CentOS 7及Bochs 002
  9. 用python输出所有的玫瑰花数_用Python爬取WordPress官网所有插件
  10. 常见的Java基础的面试题
  11. cmd-ssh使用说明
  12. gtx780有html接口吗,史上最强显卡供电GTX780入手,纪念给了我人生一堂课的舅妈...
  13. 离线强化学习总结!(原理、数据集、算法、复杂性分析、超参数调优等)
  14. 零基础学python-2.17 文件、open()、file()
  15. w3690 支持服务器内存,微星S20内存是什么
  16. 梦三国解析服务器spl文件头失败怎么解决,梦三国 卡顿问题的解决方法
  17. java交通调度,java毕业设计_springboot框架的的车辆调度管理系统
  18. 验证码(CAPTCHA)
  19. 如何学习三点透视?该注意什么?
  20. 第九届“图灵杯”NEUQ-ACM部分汇总

热门文章

  1. nginx 指定配置文件 启动 重启
  2. php mysql表情符号_php + mysql 存入表情 【如何转义emoji表情,让它可以存入utf8的数据库】...
  3. 量子计算机运行速度解方程,量子计算机可解方程组
  4. 和女朋友在一起的第一个生日送什么礼物?
  5. java快拍_Java排序之快排
  6. 广州品向:开发一个类似斗鱼的视频直播app的成本
  7. 前端三大技术栈之CSS3总结上
  8. 在c 语言中 引用数组元素时,【单选题】在 C 语言中,引用数组元素时,其数组下标的数据类型不允许是 A. 整型常量 B. 整型表达式 C. 整形符号常量 D. 整型变量...
  9. java入门-五子棋游戏的制作
  10. gen-和-egen-中的-sum()-函数