我正在python中构建点对点应用程序。它将通过UDP工作。我有一个名为getHeader(packetNo,totalPackets)
的函数,它返回该数据包的标题。根据标题的大小,我正在切割数据,将数据附加到标题并获得相同的数据包大小。
标题大小不固定,因为不同数字所消耗的长度不同,例如我正在为packetNo = 1编写标题为PACKET_NO=1
,它的长度将因packetNo 10,100,...等而不同
我目前没有在标头中包含任何数据包。我只是包括数据包编号,我想要包含它,但是如何在计算标头大小之前不知道数据包,因为标头现在应该不包含数据包而NO_OF_PACKETS = ---可以是任何长度。
我可以通过一些函数来传递它,这个函数不会计算数据包,但这会像暴力一样,会消耗不必要的时间和处理能力。有没有聪明的方法呢?
答案 0 :(得分:2)
不要使用纯文本。使数据包的标头成为两个打包的4字节(或8字节,具体取决于您期望的数据包数)整数,例如
import struct
header = struct.pack('!II', packetNo, totalPackets)
struct
模块的
答案 1 :(得分:0)
为什么不对您的数据包进行零填充,以便标头变得固定。假设您想在消息中支持10亿个数据包:
PACKET_NO=0000000001
的长度与:
相同PACKET_NO=1000000000
当然,这会在可能的数据包数上创建一个上限,但必须有一些上限,不是吗?