可変ヘッダサイズを有する等しいサイズのパケットにデータを分割する方法..

StackOverflow https://stackoverflow.com/questions/1483243

  •  18-09-2019
  •  | 
  •  

質問

私はPythonでアプリケーションをピア・ツー・ピアを構築しています。 ITSはUDP上で仕事に行きます。私は私がヘッダにデータを添付し、同じパケットサイズを取得し、データをチョッピングしていますヘッダのサイズにそのpacket.Dependingのために私のヘッダを返すgetHeader(packetNo,totalPackets)と呼ばれる機能を持っています。

数字の異なるないで消費される長さが異なるなどであるため、

ヘッダのサイズは固定されていません私はPACKET_NO=1としてpacketNo = 1のヘッダを書いて、その長さは..等packetNo 10、100のために異なるであろう

私は現在、ヘッダー内のパケットの一切含まないわけではありません。私はちょうど私がそれを含めたいが、どのように私は、ヘッダとしてヘッダサイズを計算する前に、パケットの何が今= ---任意の長さにすることができ、パケットとNO_OF_PACKETSの一切が含まれている必要があり知ることはできないパケット番号、を含むています。

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

役に立ちましたか?

解決

プレーンテキストを使用しないでください。例えば、整数2は、(あなたが期待するパケット数に応じて、または8バイト)の4バイトを詰めパケットのヘッダを作成します。

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

ここstructモジュールのドキュメントのだ。

他のヒント

パケットの

なぜゼロパッド電話番号、ヘッダは固定となるように。あなたがメッセージの中に10億個のパケットをサポートしたいとします:

PACKET_NO=0000000001

と同じ長さである

PACKET_NO=1000000000

もちろん、これはありません、パケットの可能な数の上限を作成しますが、のいくつかのの上限が存在しなければならないのでしょうか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top