RPC端口映射失败Mac OSX 10.6



我正在尝试在Mac OsX 10.6 上使用添加两个数字的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

在一个远程控制台中运行服务器

./add_server

在另一个控制台中运行客户端

./add_client localhost 23 35

23和35是我想在第二控制台上打印其总和的数字。当我执行以下操作时,服务器控制台上不会显示任何内容。

如果在运行客户端时尝试使用ip地址而不是localhost错误为:

RPC:Port mapper Failure

我使用的是MacOSX 10.6

您就快到了。

这是在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是十进制的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  

当rpcbind守护进程(负责提供请求服务正在侦听的端口的信息)没有向调用机器发出响应时,可能会出现这种错误。

这可能是由于NAT或防火墙中的错误造成的。因此,诊断问题的第一次尝试a,就像任何关于网络的事情一样,可能包括通过从最近到最远对所涉及的每个接口进行ping来验证连接是否正常,确保每个跳跃都正常工作。

最新更新