0

Pythonでピアツーピアアプリケーションを構築しています。UDPで動作します。そのパケットのヘッダーを返す関数が呼び出さgetHeader(packetNo,totalPackets)れました。ヘッダーのサイズに応じて、データを切り刻み、データをヘッダーに添付して、同じパケットサイズを取得しています。

異なる桁数によって消費される長さが異なるため、ヘッダーのサイズは固定されていません。たとえば、packetNo=1 のヘッダーを として書いていPACKET_NO=1ます。

現在、ヘッダーにパケットを含めていません。パケット番号を含めているだけです。含めたいのですが、ヘッダー サイズを計算する前にパケット数を知るにはどうすればよいですか。ヘッダーにはパケット数が含まれていない必要があり、NO_OF_PACKETS=--- は任意の長さにすることができます。

パケット数を計算する関数に渡すことはできますが、それはブルートフォースのようなものになり、不必要な時間と処理能力を消費します。それを行うためのインテリジェントな方法はありますか?

4

2 に答える 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 に答える