0

2 台の UNIX マシン間で任意のファイルを送信するために UDP 接続を使用する必要があるプロジェクトに取り組んでいます。このプロジェクトの主な要点は、データをバイト配列にエンコードし、2 台のマシン間で送信することです。私の最初の計画は、バイト配列を取得し、それらからリストを作成し、pickle でシリアル化して送信することでした。しかし、今日インストラクターから、リストを使用して pickle でシリアル化することは、問題の解決策として受け入れられるものではないと言われました。彼の言葉を引用すると:

「配布資料で定義されたプロトコルに従うように、整数、文字列、およびファイルオブジェクトを自分でエンコードおよびデコードする必要があります。」[このプロトコルは、バイト配列からセグメントを作成することを指します。各セグメントは、ファイル サイズの 4 バイト配列、ファイル名の 2 バイト配列、ID フラグの 1 バイト配列、および「ペイロード」バイト配列を保持します。送信内容によって長さが異なります。]

この時点で、私は本当にそれで行くかどうか確信が持てません。他のマシンに送信する必要があるバイト配列がありますが、そうする最初の 2 つのアイデアは許可されていません。バイト配列と UDP 接続 (どちらも個別にテスト済み) を作成できますが、それらを送信するとつまずきます。私のPythonの問題に対する良い解決策はありますか?

4

1 に答える 1

0

strPython のバイト配列は(単純な文字列) で表すのが最適です。あなたの仕事はおそらく、取得したプロトコル仕様に従ってそのバイト配列を作成することです。then であることに注意して、strソケットにアクセスするためのネットワーク関数を介して送信します。

整数 (バイト) のリストを に変換するにstrは、次を使用します。

''.join(chr(c) for c in integer_list)

あるいはstr、最初から (数字のリストを経由せずに) 権利を構築することもできます。

于 2013-10-28T15:08:53.893 に答える