Я пытаюсь получить Real VNC сервер на Ubuntu 10.04 LTS 64 бит.

Я попробовал 2 варианта. Во-первых, я получил бесплатную версию Real VNC и начал работать после того, как для всех требуется 32-битные библиотеки, взлом конфигурации и т.д. Это почти хорошо с одной маленькой проблемой, после того, как я отключаю клиента, серверные печати Aborted и завершаются. Я пробовал много комбинаций параметров и не мог понять это.

Это примерно командная строка, которую я использовал (но я пробовал много комбинаций параметров).

Xvnc :2 -desktop user-desktop -query localhost -geometry 1920x1200 -depth 16 -AcceptCutText -SendCutText -rfbauth /home/user/.vnc/passwd -SecurityTypes None -DisconnectClients

Второй вариант Я получил пробную версию Real VNC Enterprise 4.6.1 и установил ее. Теперь я могу счастливо запустить его как автономный сервер, и мои клиенты могут отключиться, не убивая сервер, но когда я пытаюсь использовать его с параметром -inetd он просто молча завершается. Когда я пробую бесплатную версию, она переходит в режим stdio и печатает сообщение о рукопожатии.

RFB 003.008

Не в случае с корпоративной версией. Это просто выходит. Нет сообщений и нет журналов.

Так есть ли у кого-нибудь идеи о том, как заставить любой вариант работать?


По рекомендации @grawity я запускаю strace и ltrace . Вот наиболее интересный вывод ltrace (я собрал данные в файл с именем abc и вставил только те строки, которые мне интересны):

$cat abc | egrep 'strchr|print'

fprintf(0x7f330223e860, "\n%s", "Sun Jul 10 13:07:30 2011\n") = 26
strchr("inetd client gone, exiting", ' ')        = " client gone, exiting"
strchr("client gone, exiting", ' ')              = " gone, exiting"
strchr("gone, exiting", ' ')                     = " exiting"


$ cat abc | egrep 'strchr|print' | grep socket
strchr("getpeername: Socket operation on"..., ' ') = " Socket operation on non-socket "...
strchr("Socket operation on non-socket ("..., ' ') = " operation on non-socket (88)"
strchr("operation on non-socket (88)", ' ')      = " on non-socket (88)"
strchr("on non-socket (88)", ' ')                = " non-socket (88)"
strchr("non-socket (88)", ' ')                   = " (88)" 

1 ответ1

1

Попробуйте запустить его под ltrace или strace .

Может случиться так, что режим inetd требует, чтобы stdin и stdout были сокетами - например, это необходимо для определения IP-адреса клиента. Вероятно, RealVNC не подготовлен к тому, чтобы getpeername() возвращала ошибку.

В качестве альтернативы используйте Xvnc.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .