問題タブ [sunrpc]

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 投票する
4 に答える
7439 参照

c - Sun RPC: バイナリ ファイルの転送

バイナリ ファイルをリモート サーバーに転送したい。コードに SUN/ONC RPC (Linux では rpcgen) を使用しています。C を使用しています。サーバーとクライアント用のコードを書きましたが、テキスト ファイルでは機能しますが、バイナリ ファイルを転送しようとすると、転送後にファイルが破損していると表示されます。データ チャンクを文字配列または XDR 文字列に格納しています。データを文字配列として保存することに問題があると思います。誰かが私に何が問題なのか教えてもらえますか? 誰か助けてくれませんか?

私がやっていることを見たい人がいる場合は、参照用にコードスニペットをここに添付します。

私の IDL:

私のサーバー:

私の顧客:

0 投票する
0 に答える
594 参照

python - rpcbind 認証の問題

rpcbindArch linux で (SunRPC)を使用しており、Python rpc.py(標準の python ソケット モジュールを使用) インターフェイスを使用して通信しています。に登録または登録解除のリクエストを送信しようとするたびにrpcbind、セキュリティ上の理由で拒否されたというメッセージが表示されます。rpcbindすべてが機能する唯一の状況は、非セキュア モード ( ) で呼び出す場合ですがrpcbind -i、すべてをセキュア モードで機能させたいと考えています。rpcbind データシートから、ループバック アドレスからのみセキュア モードで要求を行うことができるという情報を見つけましたが、そのようなソケットを作成するために知っていたすべてのアプローチを試しましたが、すべて失敗しました。rpcbindセキュア モードでに接続するにはどうすればよいですか?

0 投票する
3 に答える
495 参照

linux - Linux 上の Groovy から呼び出された C プログラムで RPC 呼び出しが失敗するのはなぜですか?

C で書かれたプログラムがあり、RPC を使用して、同じ Linux サーバー上の別のプログラム (これも C で書かれています) と通信します (一部の実稼働セットアップでは、2 番目の C プログラムは別のマシンにあるため、IPC ではなく RPC になります)。

他の C プログラム、CRON、またはコマンド ラインから呼び出された場合、期待どおりに動作し、長年にわたって動作しているため、一般的に動作すると言っても過言ではありません。

Groovy スクリプトから呼び出された同じプログラムが、明らかにネットワークの問題で失敗します。

C プログラムでは、svc_register(xprt, prognum, versnum, dispatch, protocol)成功しますが、

  • リクエスト後の RPC サーバー: clnttcp_create「接続が拒否されました」で失敗する
  • 応答を待っている RPC クライアント: selecton でsvc_fdset失敗しますEBADF

Groovy プログラム (完全を期すために、ここではあまり説明しません):

問題を特定して解決するには、どうすればよいでしょうか?

0 投票する
2 に答える
439 参照

c - SunRPC は、一方向のメッセージングを有効にします (ストリーミング/バッチ処理?)

Linux (RHEL 4/5) で SunRPC を使用するいくつかのサービスを高速化したいと考えています。

私たちの RPC 呼び出しは戻り値を必要としませんが、RPC の性質上、とにかく常に ack が送信されます。これにより、最近問題になっている遅延が発生します。信頼できるトランスポート (TCP) で実行する場合、RPC 応答によって発生する遅延を回避したいと考えています。

ここのドキュメントは、Solaris がそれを可能にする「oneway」キーワードを持っていることを示していますが、Linux/glibc はこれをサポートしていないようです。

Linux で SunRPC を使用して「ストリーミング」または一方向メッセージングを有効にする方法はありますか?

0 投票する
2 に答える
714 参照

design-patterns - Client-Dispatcher-Server アーキテクチャとしての SunRPC メカニズムの制限と Broker との比較

デザインパターンに関する本(旧版)「パターン指向のソフトウェアアーキテクチャ」を読んでいます。Client-Dispatcher-Server に関する章では、SunRPC は Client-Dispatcher-Server アーキテクチャとして引用されており、ポートマッパーは Client-Server ネゴシエーションで Dispatcher として機能します。SunRPC がどのように機能するかは多かれ少なかれ知っていますが、SunRPC を実際に使用したことはありません。

3 つの質問があります。

  • Client-Dispatcher-Server メカニズムとしての SunRPC のソフトウェア制限 (インターフェイスと機能の観点から) は何ですか?
  • 同じ Client-Dispatcher-Server アーキテクチャ (言語に関係なく) を達成するために、今日同様に優れたシステムは何ですか?
  • Broker アーキテクチャと Client-Dispatcher-Server アーキテクチャの本質的な違いは何ですか?

質問が多く、複雑であることは承知しています。独立した質問に分割することも考えましたが、この提出のポイントは、典型的なケースとして特定の例 (SunRPC) を使用して、一般的なアーキテクチャの原則と制限についてです。これらの考慮事項により、猶予期間中の回答に対する満足度に関係なく、機会があればすぐに 100 担当者のバウンティを設定することを事前に発表します。

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

multithreading - MFC を使用した ONC RPC SVC_RUN() のクリーンな終了

私はマルチスレッド コードにかなり慣れていないので、誰かが私の問題を解決してくれることを願っています。

ONC/RPCサーバーとその他のもので構成されるマルチパートプログラムがあります(「もの」は私の質問には関係ありませんが、サーバーのプログラムに含まれている必要があります)。svc_run() は決して戻らないので、それを独自のスレッドに入れ、プログラムの最後で単にスレッドを終了して、次の作業に進むことにしました。

ただし、私のプログラムは拡張されており、スレッドを終了するのではなく、ONC/RPC サーバーをクリーンかつ安全に終了またはクローズしたいと考えています。ただし、svc_run() から安全に戻る方法がわかりません。誰でもこれを手伝ってもらえますか?

同じ問題を抱えている他の人を何人か見つけましたが、誰も彼らに応答していないようです. svc_run() を server_process() 関数と同じファイルに単純に移動しようとしましたが、fd_set の構造が正しく設定されず (すべてが 0)、関数が失敗します。

svc_run() は、http ://sourceforge.net/projects/oncrpc-windows/ にあるコードで作成された dll で定義されています。

コードの関連要素を提供しています。また、svc_exit() は、私が現在使用している onc/rpc システムの一部ではないようです。

長い質問で申し訳ありませんが、よろしくお願いします。

レックス

これが私のコードです:

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

rpc - 同じポートで複数のSunRPC(ONC-RPC)プログラム番号を使用できますか?

ONC RPCヘッダーには、呼び出しを識別するためのプログラム番号、バージョン番号、およびプロシージャ番号が含まれています。通常、さまざまなRPCプログラム(サービス)がさまざまなプロセスによって実装されるため、プログラムはさまざまなTCP/UDPポート番号にマップされます。1つのプロセスが複数のRPCプログラムを実装している場合、それらすべてに同じポートを登録して使用できますか?プログラム番号は、正しいサービスに逆多重化するのに十分なようです。

そうすることの実際の例はありますか?

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

c - SUN RPC(ONC / RPC):Cでnullプロシージャを使用してラウンドトリップ時間(またはping)を計算する

クライアントとサーバー間のRTT(ラウンドトリップ時間)を計算または見積もるにはどうすればよいですか?

これに対処するチュートリアルまたはサンプルも役立ちます。

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

c - SunRPCを介したバイナリファイルの送信

SunRPCを使用して小さなクライアントサーバープログラムを実装しようとしています。私が望んでいる機能の1つは、クライアントが任意の形式のファイルをサーバーにアップロードできるようにすることです。

今私はこの仕様を持っています:

そしてこれは私のクライアントです:

問題は「in.file=read_file(argv [5])」ステートメントにあります。次のようなコンパイラエラーが発生します。

タイプ'char*'からタイプ'struct'に割り当てる場合の互換性のないタイプ</p>

だから私の質問は、彼はどのようなポインター必要ですか?

ありがとう!

ライナス

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

c++ - RPC:配列が大きすぎる場合のxdr_bytes「引数をエンコードできません」

RPCを介して配列を送信しようとしていますが、データ配列が大きくなると「RPC:引数をエンコードできません」というメッセージが表示されます。私が見たものから10Kb未満。

これは失敗する行です。

参照されている構造体は次のとおりです。

このエラーを修正する方法、または任意の大きな配列を送信する別の方法はありますか?