2012-05-04 83 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

相關問題