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

cigdeys3  于 2023-01-16  发布在  其他
关注(0)|答案(8)|浏览(274)

我正在尝试运行一个简单的RPC程序,我用rpcgen创建了这个程序。它是一个简单的阶乘程序。这是我的第一个RPC程序。make运行正常。可执行文件也被创建了。但是当尝试运行可执行文件时,我得到了这个错误:

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

我试着在另一台有相同操作系统(Ubuntu)的PC上运行同样的程序,它在那里运行得很完美。

ecfsfe2w

ecfsfe2w1#

只需安装以下程序并尝试。

sudo apt install libc-dev-bin

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

4sup72z8

4sup72z82#

我在使用rpcinfo时也出现了错误。最后我不得不运行:

/etc/init.d/rpcbind start

here中所建议的。
获取后:

[info] Already running: rcpbind.

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

5anewei6

5anewei63#

未定义对“xdr_wrapstring”的引用
我认为这是最新ubuntu版本?22.04中的RCPBIND问题

f8rj6qna

f8rj6qna4#

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

xoshrz7s

xoshrz7s5#

检查服务是否正在使用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权限来运行服务。

mpbci0fu

mpbci0fu6#

最近Linux版本的rpcbind有一个 bug/feature-它现在在系统 Boot 后不活动/不运行,但根据/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“套接字激活”效果。

ulmd4ohb

ulmd4ohb7#

如何安装rpcgen

在终端上键入以下命令。

sudo apt-get install rpcbind

但是有时候上面的代码并不能帮助你安装rpcgen

那时你必须按照以下步骤操作。然后你就可以很容易地安装它了。你应该一步一步地按照这个步骤操作

sudo apt-get update  
sudo apt-get install rpcbind

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

v8wbuo2f

v8wbuo2f8#

出现此问题是因为portmaprpcbind等实用程序不可用。请安装其中一个来解决此问题。

相关问题