我正在尝试运行一个使用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上运行相同的程序。它在那里运行完美。
答案 0 :(得分:24)
首先检查portmapper是否正常工作,使用rpcinfo
进行检查。
如果您收到任何错误,请安装portmap
答案 1 :(得分:6)
使用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权限才能运行该服务。
答案 2 :(得分:4)
在最新的rpcbind Linux版本中有一个 bug / feature - 它现在在系统启动后没有活动/运行,但应该以某种方式被激活" socket激活"根据/ usr / lib / systemd / system /中的systemctl配置rpcbind.service文件:
[Install]
Also=rpcbind.socket
检查此线程是否同一个错误/功能导致Ubuntu问题(https://bugs.launchpad.net/ubuntu/+source/rpcbind/+bug/1558196)。
对您的(我们的)rpcbind问题的简短回答是 - 为了运行RPC服务器代码,对系统的systemctrl配置进行此修改:< / p>
sudo systemctl add-wants multi-user.target rpcbind
现在,设置rpcbind运行的预期方法是以某种方式访问/var/run/rpcbind.sock,我非常感谢一些Unix / Linux大师可能会启发我的RPC服务器应用程序代码应该做什么才能实现这个rpcbind&#34; socket激活&#34;效果。
答案 3 :(得分:1)
由于“portmap”或“rpcbind”等实用程序不可用而出现问题。
答案 4 :(得分:1)
如何安装rpcgen
在终端上输入此命令。
sudo apt-get install rpcbind
但有时候上面的代码无法帮助你破解rpcgen。
那时你必须按照这些步骤进行操作。然后你可以轻松安装它。 你应该按照这一步骤进行操作
1)sudo apt-get update
2)sudo apt-cache搜索apache2
3)sudo apt-get install rpcbind
最后,您可以使用此命令 rpcinfo
进行检查
答案 5 :(得分:1)
只需安装以下内容并尝试。
sudo apt install libc-dev-bin
有关更多信息,请查看以下GitHub。 https://github.com/riyazathali/RPC-HelloWorld
答案 6 :(得分:0)
我也使用rpcinfo
时出错。最后,我不得不跑步:
/etc/init.d/rpcbind start
如here中的建议。
获取后:
[info] Already running: rcpbind.
rpc服务器二进制文件能够注册。