0

MacOsX10.6で2つの数値を加算するRPCを使用してプログラムを実行しようとしています

これが私がしていることです:

rpcgen -a -C add.x

ファイルを生成します

add.h、add_clnt.c、add_svc.c、add_server.c、add_client.c

次に、以下を使用してすべてのファイルをコンパイルします。

gcc -g -DRPC_SVC_FG -c -o add_clnt.o add_clnt.c
gcc -g -DRPC_SVC_FG -c -o add_client.o add_client.c
gcc -g -DRPC_SVC_FG -c -o add_xdr.o add_xdr.c
gcc -g -DRPC_SVC_FG -o add_client add_clnt.o add_client.o add_xdr.o 
gcc -g -DRPC_SVC_FG -c -o add_svc.o add_svc.c
gcc -g -DRPC_SVC_FG -c -o add_server.o add_server.c
gcc -g -DRPC_SVC_FG -o add_server add_svc.o add_server.o add_xdr.o

1つのリモートコンソールでサーバーを実行する

./add_server

別のコンソールでクライアントを実行する

./add_client localhost 23 35

23と35は、2番目のコンソールに合計を印刷したい番号です。次のコマンドを実行すると、サーバーコンソールに何も表示されません。

クライアントの実行中にローカルホストではなくIPアドレスを試した場合エラーは次のとおりです。

RPC:Port mapper Failure

MacOSX10.6を使用しています

4

2 に答える 2

1

もうすぐです。

これはSolarisシステムで行われ、MacOSXでも同様のことが表示されるはずです。

リモートホストでadd_serverを起動した後、add_serverがリモートポートマッパーに正常に登録されていることを確認します。例えば

remote> cat add.x
struct add_args {
    int a;
    int b;
};
typedef struct add_args add_args;
bool_t xdr_add_args();    


#define ADDPROG ((u_long)0x20000001)
#define ADDVERS ((u_long)1)
#define ADD ((u_long)1)   
extern int *add_1();  

remote> ./add_server &
remote> rpcinfo -t localhost 536870913
program 536870913 version 1 ready and waiting

536870913は10進数で0x20000001です。ローカルホストからリモートホストに到達できるかどうかを確認します。はいの場合は、add_clientを実行します。

local> ping remote
remote is alive
local> rpcinfo -t remote 536870913
program 536870913 version 1 ready and waiting
local> ./add_clnt remote 23 35  
于 2013-02-28T06:34:37.600 に答える
0

この種のエラーは、rpcbindデーモン(要求されたサービスがリッスンしているポートに関する情報の提供を担当)が呼び出し元のマシンに応答しない場合に発生する可能性があります。

これは、NATまたはファイアウォールのエラーが原因で発生する可能性があります。したがって、ネットワークに関するものと同様に、問題を診断する最初の試みでは、関連するすべてのインターフェイスに最も近いものから最も遠いものまでpingを実行し、各ジャンプが正常に機能することを確認して、接続が正常であることを確認する必要があります。

于 2017-02-23T15:21:54.997 に答える