0

我正在 python 中构建对等应用程序。它可以通过 UDP 工作。我有一个调用函数getHeader(packetNo,totalPackets),它返回该数据包的标头。根据标头的大小,我正在切割数据,将数据附加到标头并获得相同的数据包大小。

标头大小不是固定的,因为不同数字所消耗的长度不同,例如我正在为 packetNo=1 编写标头PACKET_NO=1,它的长度对于 packetNo 10、100 等

我目前没有在标头中包含任何数据包。我只包含数据包编号,我想包含它,但是在计算标头大小之前我怎么知道没有数据包,因为标头现在应该不包含数据包,并且 NO_OF_PACKETS=--- 可以是任何长度。

我可以通过一些函数传递它,该函数将计算数据包的数量,但这将类似于蛮力并且会消耗不必要的时间和处理能力。有什么聪明的方法可以做到吗?

4

2 回答 2

2

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

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

这是struct模块的文档。

于 2009-09-27T10:14:06.387 回答
0

为什么不对您的数据包数量进行零填充,以使标头变得固定。假设你想在一条消息中支持 10 亿个数据包:

PACKET_NO=0000000001

长度相同:

PACKET_NO=1000000000

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

于 2009-09-27T11:13:41.347 回答