当前位置: 首页>>技术教程>>正文


尝试运行简单的RPC程序时出错

, ,

问题描述

我正在尝试运行一个使用rpcgen创建的简单RPC程序。它是一个简单的析因程序。这是我的第一个RPC程序。使make正常工作,并创建可执行文件。但是,当尝试运行可执行文件时,出现此错误:

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

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

最佳办法

首先,您检查portmapper是否正常工作,请使用rpcinfo进行检查。如果出现任何错误,请安装portmap

次佳办法

使用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特权才能运行该服务。

第三种办法

在Linux的最新版本rpcbind中存在一个错误/功能-在系统启动后,它现在不处于活动/运行状态,但是根据/usr /lib /systemd /system /中的systemctl配置rpcbind.service文件,它应该以某种方式成为”socket activated”:

[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专家,这些人可能会启发我实现该rpcbind的RPC服务器应用程序代码应该做什么。 “socket activation”效果。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/9013.html,未经允许,请勿转载。