Ошибка при попытке запустить простую RPC-программу

Я пытаюсь запустить простую программу RPC, которую я создал с помощью rpcgen. Это простая факториальная программа. Это моя первая RPC-программа. Работает отлично. Выполняются также исполняемые файлы. Но при попытке запустить исполняемые файлы я получаю эту ошибку:

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

Я попробовал запустить ту же программу на другом ПК с той же ОС (ubuntu). Там прекрасно работает.

Ответы

Ответ 1

Сначала вы проверяете, работает ли portmapper или нет, используйте rpcinfo, чтобы проверить его. Если вы получите какую-либо ошибку, установите portmap

Ответ 2

Проверьте, работает ли служба с помощью 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 для запуска службы.

Ответ 3

В последних версиях Linux rpcbind есть ошибка/функция - теперь она не активна/запущена после загрузки системы, но должна как-то быть "сокет активирована" в соответствии с конфигурацией systemctl. Файл rpcbind.service в/usr/lib/systemd/система/:

[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.

Ответ 4

Проблема возникает из-за недоступности утилиты, такой как "portmap" или "rpcbind".

  • Установите либо portmap, либо rpcbind. Это решит проблему.

Ответ 5

Как установить rpcgen

Введите эту команду на терминал.

sudo apt-get install rpcbind

но иногда код выше не поможет вам скрыть rpcgen.

enter image description here

В это время вам необходимо выполнить следующие действия. Затем вы можете легко установить его. вы должны следовать этому шаг за шагом

1) Обновление sudo apt-get
2) Поиск sudo apt-cache apache2 3) sudo apt-get install rpcbind

Наконец, вы можете проверить это, используя эту команду rpcinfo

enter image description here