RPC 端口映射失败 Mac OSX 10.6

Posted

技术标签:

【中文标题】RPC 端口映射失败 Mac OSX 10.6【英文标题】:RPC port Map Failure Mac OSX 10.6 【发布时间】:2013-02-07 05:49:48 【问题描述】:

我正在尝试使用在 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

【问题讨论】:

就其价值而言,唯一仍在使用您正在查看的 RPC 系统的是 NFS 和支持服务。它不是任何人用来构建任何新东西的技术,也不应该是。 【参考方案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 是十进制的 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  

【讨论】:

【参考方案2】:

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

这可能是由于 NAT 或防火墙错误造成的。因此,与任何有关网络的问题一样,第一次尝试诊断问题可能涉及通过对涉及的每个接口进行 ping 验证连接是否正常,从最近到最远,确保每次跳转都正常。

【讨论】:

以上是关于RPC 端口映射失败 Mac OSX 10.6的主要内容,如果未能解决你的问题,请参考以下文章

mac osx tcp端口怎么打开

RPC:端口映射运行时出现超时错误

如何在 mac osx 10.6 中使用 fsevents 创建观察者

如何在 Mac OSX 10.6 上卸载 wxpython 2.8

在 Mac OSX 端口 80 上杀死一个未知的自重启服务器

tnameserv:OSX 的端口问题