21

我正在尝试运行一个使用 rpcgen 创建的简单 RPC 程序。它是一个简单的阶乘程序。这是我的第一个 RPC 程序。制作工作正常。还创建了可执行文件。但是在尝试运行可执行文件时,我收到此错误:

$sudo ./fact_server 
Cannot register service: RPC: Unable to receive; errno = Connection refused
unable to register (FACTPROGRAM, FACTVERSION, udp).

我尝试在另一台具有相同操作系统(ubuntu)的电脑上运行相同的程序。它在那里运行完美。

4

7 回答 7

27

首先检查端口映射器是否工作,使用rpcinfo检查它。如果您收到任何错误,请安装portmap

于 2012-05-04T19:55:08.267 回答
7

使用 . 检查服务是否正在运行rpcinfo。这就是我得到的。

$ rpcinfo 
   program version netid     address                service    owner
    100000    4    tcp6      ::.0.111               portmapper superuser
    100000    3    tcp6      ::.0.111               portmapper superuser
    100000    4    udp6      ::.0.111               portmapper superuser
    100000    3    udp6      ::.0.111               portmapper superuser
    100000    4    tcp       0.0.0.0.0.111          portmapper superuser
    100000    3    tcp       0.0.0.0.0.111          portmapper superuser
    100000    2    tcp       0.0.0.0.0.111          portmapper superuser
    100000    4    udp       0.0.0.0.0.111          portmapper superuser
    100000    3    udp       0.0.0.0.0.111          portmapper superuser
    100000    2    udp       0.0.0.0.0.111          portmapper superuser
    100000    4    local     /run/rpcbind.sock      portmapper superuser
    100000    3    local     /run/rpcbind.sock      portmapper superuser
        24    5    udp       0.0.0.0.3.99           -          superuser
        24    5    tcp       0.0.0.0.3.100          -          superuser

如果服务未运行,您必须使用rpcbind. 在 Ubuntu 上,我需要 root 权限才能运行该服务。

于 2012-05-04T19:58:42.120 回答
4

最近 Linux 版本的 rpcbind有一个错误/功能- 它现在在系统启动后不活动/运行,但应该根据 /usr/lib/systemd/system/ 中的 systemctl 配置 rpcbind.service 文件以某种方式“激活套接字” :

[Install] 
Also=rpcbind.socket

检查此线程上相同的错误/功能导致 Ubuntu 问题(https://bugs.launchpad.net/ubuntu/+source/rpcbind/+bug/1558196)。

对您(我们)的 rpcbind 问题的简短回答是- 为了运行 RPC 服务器代码,请对系统的 systemctrl 配置进行以下修改

sudo systemctl add-wants multi-user.target rpcbind

现在,设置 rpcbind 运行的预期方法是以某种方式访问​​ /var/run/rpcbind.sock,我要感谢一些 Unix/Linux 大师,他们可能会启发我了解 RPC 服务器应用程序代码应该做什么来实现这个 rpcbind “套接字激活”效果。

于 2016-10-05T12:19:50.100 回答
2

问题的出现是由于无法使用类似portmapor的实用程序rpcbind。安装其中任何一个来解决问题。

于 2012-05-18T02:07:21.000 回答
2

如何安装rpcgen

在终端上键入此命令。

sudo apt-get install rpcbind

但有时上面的代码无法帮助您安装rpcgen.

在此处输入图像描述

那时您必须按照这些步骤操作。然后您可以轻松安装它。你应该按照这个一步一步来

sudo apt-get update  
sudo apt-get install rpcbind

最后,您可以使用此命令进行检查rpcinfo

在此处输入图像描述

于 2016-10-01T10:59:41.380 回答
1

只需安装以下内容并尝试。

sudo apt install libc-dev-bin

有关更多信息,请查看以下 GitHub。 https://github.com/riyazathali/RPC-HelloWorld

于 2020-03-08T10:53:44.530 回答
0

我也有错误使用rpcinfo。最后我不得不运行:

/etc/init.d/rpcbind start

正如这里建议的那样。

得到后:

[info] Already running: rcpbind.

rpc 服务器二进制文件能够注册。

于 2020-11-22T21:16:25.220 回答