如何将数据拆分为具有可变标头大小的等大小数据包。。

2024-03-28 20:01:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用python构建对等应用程序。它将在UDP上工作。我有一个名为getHeader(packetNo,totalPackets)的函数,它返回该函数的头包。视情况而定在报头的大小上,我切碎数据,将数据附加到报头,得到相同的数据包大小。在

头大小不是固定的,因为不同位数使用的长度是不同的,例如,我将packetNo=1的头写为PACKET_NO=1,它的长度对于packetNo 10,100,。。等等

我当前没有在头中包含任何数据包。我只是包含了数据包编号,我想包括它,但是在计算报头大小之前,我怎么知道数据包的数量呢?因为报头现在应该不包含任何数据包,而且没有任何数量的数据包=---可以是任意长度的。在

我可以通过一些函数传递它,这个函数不会计算数据包的数量,但这会像暴力一样,会消耗不必要的时间和处理能力。有什么明智的方法吗?在


Tags: 数据函数no应用程序数量packet情况数据包
2条回答

不要使用纯文本。使包的头成为两个压缩的4字节(或8字节,取决于您期望的数据包数量)整数,例如

import struct
header = struct.pack('!II', packetNo, totalPackets)

Here's documentation用于struct模块。在

为什么不把你的包数归零,这样报头就变得固定了。假设您希望在一条消息中支持10亿个数据包:

PACKET_NO=0000000001

长度与:

^{pr2}$

当然,这将为可能的数据包数量创建一个上限,但是必须有一个的上限,不是吗?在

相关问题 更多 >