質問

ソケットプログラミング(Pythonで)を学んでいますが、データをカプセル化する最良の/典型的な方法は何だろうと思っていましたか?パケットは、受信側で実行、停止、構成などのコマンドを発行するために使用されます。 JSONまたは単なるテキストを使用すると便利ですか?

役に立ちましたか?

解決

これにより物事が容易になるため、固定形式またはほとんど固定形式を使用することをお勧めします。
その後、標準ライブラリの struct.Struct などの機能を、pack()およびumpack()メソッドとともに使用するか、または Construct の場合、解析作業の多くが完了しているはずです;-)

他のヒント

最初はプレーンテキストをお勧めします-デバッグが簡単です。テキストの形式は、何をしているのか、コマンド、引数などの数によって異なります。コマンドがどのように見えるかを具体化しましたか?どのように見えるかがわかれば、フォーマットをすべて単独で提案する可能性があります。

TCPまたはUDPを使用していますか? TCPはストリームであるため簡単ですが、UDPを使用している場合、UDPパケットの最大サイズとメッセージの大きさを念頭に置いてください。

学習課題として何かを開発している場合、構造化されたテキスト(つまり、人間が読み取り可能かつ人間が書き込み可能)の形式を使用するのが最善の方法です。

例は、コマンドごとに固定数のフィールド、固定幅のテキストフィールド、および/または簡単に解析可能なフィールド区切り文字を使用することです。

一般に、テキストはパケットサイズの点では効率的ではありませんが、パケットキャプチャを実行する場合(wiresharkを使用する場合)、またはtelnetを使用してクライアントを模倣する場合、テキストを簡単に読むことができるという利点があります。

そしてこれが単なる学習課題である場合、デバッグの容易さは重要な問題です。

scapy (すばらしいPythonパケット操作ライブラリ)を見てくださいそれを実装します。 いくつかのフィールドがあるようです。

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