問題タブ [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.
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 関数のいずれか
python - Python dict を XDR にパックする方法
私はpython dictを持っています:
この dict を XDR データ形式にパックするにはどうすればよいですか?
c++ - TCP ソケット経由で XDR を送信するための良い方法
TCP ソケットを介して送信されるいくつかの XDR データ パケットがあります。ここに私のコードのスニペットがあります:
ここで、パケットは次のようにシリアル化されます。
最初のテストとして、最大パケット サイズが 2000 であると想定しており、反対側からは常に 2000 を読み取っています。最初のテストとして、これは問題なく動作しますが、必要でないときはより少ない情報を送受信できるようにしたいと考えています。さらに、サーバーのパケット サイズを増やした場合に備えて、クライアントを再コンパイルする必要はありません。
自分でパケット サイズを付加せずに、このストリームを送受信する適切な方法があるかどうかを知りたいです。そして、これを自分で追加する必要がある場合、xdr サイズを簡単に取得する方法はありますか?
乾杯、
追加: 次のように xdr_rec バッファーを使用してみました。
10 uint32 の正しいバッファをフィードすると、すべてうまくいきます。ここで、バッファーの最後でいくつかのバイトをカットしようとしましたが、xdrrec_eof
またはxdrrec_skiprecord
エラーが発生することを期待していました。これは、まだすべてのデータを受信していないことを検出するために使用したかったものです。代わりに、両方が成功して戻りxdr_uint32_t
、コードの実行がブロックされます。したがって、今でも本当に見逃しているのは、でデコードを開始する前に完全なパケットを受信したことを検出する方法xdr_uint32_t
です。なにか提案を?
python - Python XDR TCP ストリーム
XDR データを受信する C ソケット サーバーがあります。C および Java クライアントを作成しました。を使用して Python クライアントを作成しようとしていますxdrlib
。
これをサーバー経由でデコードすると、データが異なります。これは、データが xdrmem デコーダーを介して読み取られるようにエンコードされているためです。(レコードの開始と終了はありません)。
xdr レコードの作成をサポートする Python 用のライブラリがあるかどうかは誰にもわかりませんか? c ではこれは経由xdrrec_create
で行われ、Java では と呼ばれXdrTcpEncodingStream
ます。
c++ - 文字列の可変長配列をシリアライズするXDR
XDR 経由でパケットをシリアル化していますが、文字列のベクトルを提供する方法がわかりません。std::vector
ここでは、 of の完全に機能する小さなシリアライゼーション/デシリアライゼーションがありuint64_t
ます。ここに私のコード:
シリアライザー:
デシリアライザー:
次のコードは機能します... running ./serializer | ./deserializer
i gets 1 2 3. 今、シリアル化する必要があることを処理する方法がわかりませんstd::vector<std::string>
。xdr_string を使用すると、単一の文字列が適切に機能します。
http://linux.die.net/man/3/xdr_array
どんな助けでも大歓迎です!
編集:
私は次のことを試しまし た:
デシリアライザー:
シリアライザーのコードが最適ではないと確信していますが、少なくとも動作するように見えます。ただし、デシリアライザーはそうではありません!! 問題は、xdr_array を呼び出す前に割り当てるメモリの量がわからないという事実に関連していると思います。何か助けはありますか?