問題タブ [xdr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
104 参照

c - NFSACL GETACL / SETACL 構造体

クライアントとサーバーの間にプロキシ サーバーがあります。

XDR を使用して、それらの間の NFS メッセージを読み取り、変更します

たとえば、ファイルサイズを編集して属性の返信を取得したい場合は、構造体と関数を使用します

GETATTR3res

bool_t xdr_GETATTR3res ( XDR *xdrs, GETATTR3res *objp );

同じ方法を使用して返信を変更したい

RPC:

プログラム: NFSACL (100227)

プログラムのバージョン: 3

手順: GETACL (1) および SETACL (2)

(fattr3)属性フィールドをxdrで編集したい

NFSACL の XDR 関数、または NFSACL プロシージャが持つフィールドの分解された XDR 関数のいずれか

0 投票する
1 に答える
242 参照

python - Python dict を XDR にパックする方法

私はpython dictを持っています:

この dict を XDR データ形式にパックするにはどうすればよいですか?

0 投票する
1 に答える
1027 参照

c++ - TCP ソケット経由で XDR を送信するための良い方法

TCP ソケットを介して送信されるいくつかの XDR データ パケットがあります。ここに私のコードのスニペットがあります:

ここで、パケットは次のようにシリアル化されます。

最初のテストとして、最大パケット サイズが 2000 であると想定しており、反対側からは常に 2000 を読み取っています。最初のテストとして、これは問題なく動作しますが、必要でないときはより少ない情報を送受信できるようにしたいと考えています。さらに、サーバーのパケット サイズを増やした場合に備えて、クライアントを再コンパイルする必要はありません。

自分でパケット サイズを付加せずに、このストリームを送受信する適切な方法があるかどうかを知りたいです。そして、これを自分で追加する必要がある場合、xdr サイズを簡単に取得する方法はありますか?

乾杯、

追加: 次のように xdr_rec バッファーを使用してみました。

10 uint32 の正しいバッファをフィードすると、すべてうまくいきます。ここで、バッファーの最後でいくつかのバイトをカットしようとしましたが、xdrrec_eofまたはxdrrec_skiprecordエラーが発生することを期待していました。これは、まだすべてのデータを受信して​​いないことを検出するために使用したかったものです。代わりに、両方が成功して戻りxdr_uint32_t、コードの実行がブロックされます。したがって、今でも本当に見逃しているのは、でデコードを開始する前に完全なパケットを受信したことを検出する方法xdr_uint32_tです。なにか提案を?

0 投票する
1 に答える
385 参照

python - Python XDR TCP ストリーム

XDR データを受信する C ソケット サーバーがあります。C および Java クライアントを作成しました。を使用して Python クライアントを作成しようとしていますxdrlib

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

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

0 投票する
1 に答える
608 参照

c++ - 文字列の可変長配列をシリアライズするXDR

XDR 経由でパケットをシリアル化していますが、文字列のベクトルを提供する方法がわかりません。std::vectorここでは、 of の完全に機能する小さなシリアライゼーション/デシリアライゼーションがありuint64_tます。ここに私のコード:

シリアライザー:

デシリアライザー:

次のコードは機能します... running ./serializer | ./deserializeri gets 1 2 3. 今、シリアル化する必要があることを処理する方法がわかりませんstd::vector<std::string>。xdr_string を使用すると、単一の文字列が適切に機能します。

http://linux.die.net/man/3/xdr_array

どんな助けでも大歓迎です!

編集:

私は次のことを試しまし :

デシリアライザー:

シリアライザーのコードが最適ではないと確信していますが、少なくとも動作するように見えます。ただし、デシリアライザーはそうではありません!! 問題は、xdr_array を呼び出す前に割り当てるメモリの量がわからないという事実に関連していると思います。何か助けはありますか?