2012-05-04 174 views
16

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

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

我试着用相同的OS(Ubuntu的),另一台PC上运行相同的程序。它在那里完美运行。

+0

听起来像别的东西已经在你想绑定的端口上运行了 – Nick

回答

21

首先你检查portmapper是否工作,用rpcinfo来检查它。 如果您有任何错误,然后安装portmap

+0

是的谢谢。这解决了我的问题。 – arkiver

+0

@arkiver:欢迎 – rekenerd

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

1

问题出现是由于无法使用像“portmap”或“rpcbind”这样的实用程序。

  • 安装portmap或rpcbind。它会解决问题。
+0

是的。这解决了问题。谢谢。 – arkiver

1

如何在终端上安装的rpcgen

键入以下命令。

命令和apt-get安装RPCBIND

但有时上面的代码不会帮助你的英索尔的rpcgen。

enter image description here

那时你必须遵循这些steps.Then你可以很容易地安装它。 应按照此一步一步

1)sudo易于得到更新
2)命令和apt-缓存搜索的Apache2 3)命令和apt-get安装RPCBIND

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

enter image description here

3

有一个错误/功能在rpcbi最近发布的Linux第二 - 这是现在没有激活/系统启动后运行,但应该以某种方式被“激活插座”根据在/ usr/lib中/ systemd /系统systemctl配置rpcbind.service文件/:

[Install] 
Also=rpcbind.socket 

检查这个线程在相同的bug /功能导致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,对于某些可以启发我的RPC服务器应用程序代码来实现此rpcbind套接字激活的Unix/Linux专家“效应。

+0

重启后我遇到了这个问题,并且您的最后一行帮助 - 谢谢 – serup

+0

@serup:您的意思是'sudo systemctl ....'行?由于我最后一段是一个问题,我还不知道答案。如何实现'套接字激活' - 因为试图使用rpc服务不会这样做。 – vleo

+0

是的,在运行最后一行并重启系统之后,然后发生问题 – serup

相关问题