2016-03-21 13 views
5

XDRデータを受け取るCソケットサーバーがあります。私はCとJavaクライアントを書いています。私はxdrlibを使ってPythonクライアントを書こうとしています。Python XDR TCPストリーム

import xdrlib 

p = xdrlib.Packer() 
p.pack_int(5) 
p.pack_int(4) 
p.pack_int(3) 
data = p.get_buffer() 

私はこれをサーバー経由でデコードするとデータが異なります。これは、データがxdrmemデコーダを介して読み取られるようにエンコードされているためです。 (レコードの開始と終了はありません)。

xdrレコードの作成をサポートしているPythonのライブラリがあるかどうかは知りませんか? cでは、これはxdrrec_createで行われ、JavaではXdrTcpEncodingStreamと呼ばれます。

+0

最小パケット長、パケットブロックサイズ。グローバルに使用するためのパケットパターンを作成する必要があります。すべてのパケットにはブロック定義が含まれていました。ヘッダー定義なしで通信しないでください。 – dsgdfg

+0

申し訳ありません...あなたのコメントを言い換えることができますか?私はあなたが説明したものを得ていませんでした... – Stefano

答えて

-2

私はほとんどがxdrlibがよく使われるパッケージです。 CまたはJavaで実行できるプロセスがある場合、それらをc/javaで実行し、Swigによって作成されたインターフェイスを使用してPythonで使用することができます。私の理解がシナリオに合っていないかどうかを教えてください。

+0

よく...私は過去にSwigを使用しましたが、Cライブラリを使用すると、xdrrec_createはデータを取得するために異なるコールバックを使用します。私はこれがPythonでマッピングするのは簡単ではないことに恐れています。 私はJavaバージョンをラップしようとしませんでした。 もし私のニーズに合ったPythonモジュールが見つかったら、私はクライアントに書き込むためにJavaに固執する(またはJavaライブラリをPythonにswigでラップする)と思います。 – Stefano

+0

彼はPythonモジュールを探しています。スィグは常に解決策ですが、彼が求めているものではありません – Cristas

関連する問題