通过 xinetd 在 Ubuntu 10.04 LTS 上实现真正的 VNC

通过 xinetd 在 Ubuntu 10.04 LTS 上实现真正的 VNC

我正在尝试在 Ubuntu 10.04 LTS 64 位上获取 Real VNC 服务器。

我尝试了 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 的建议,我运行straceltrace。这是 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

尝试在ltrace或下运行它strace

可能是inetd模式要求标准输入标准输出是套接字 – 例如,这是确定客户端 IP 地址所必需的。RealVNC 可能还没有准备好getpeername()返回失败。

或者,使用 Xvnc。

相关内容