37

我目前正在开发一个网络应用程序,其中有一部分我必须通过 VNC 打开特定机器来监视其桌面。

我需要有一个基于 Web 的 VNC 客户端,这意味着它不应该在客户端安装服务器或任何其他文件。客户端只需打开网络浏览器并将目标机器的IP在浏览器中打开,从而运行基于网络的VNC客户端。

有什么好的资源可以开始这个领域?

更新 2013-10-29

仅供参考:当时我最终按照@Dolph 的推荐使用了鳄梨酱
它是:

  • 很容易设置
  • 很容易遵循它的代码并对其进行逆向工程(只要你知道 java)
  • 它仍然在我以前工作的公司使用并且很强大
4

6 回答 6

30

查看鳄梨酱项目

Guacamole 是一个无客户端远程桌面网关。它支持 VNC 和 RDP 等标准协议。我们称其为无客户端,因为不需要插件或客户端软件。多亏了 HTML5,一旦在服务器上安装了 Guacamole,您只需一个网络浏览器即可访问您的桌面。

不利的一面是,它需要一个 Java 服务器来代理。然而,这应该是微不足道的,即使您还没有启动并运行 Java 服务器(Tomcat 非常简单,而且Guacamole 的说明也很简单):

Guacamole 分为两部分:guacamole-server,它提供 guacd 代理和相关库,以及 guacamole-client,它提供由您的 servlet 容器(通常是Tomcat )服务的客户端。

guacamole-client 以二进制形式提供,但 guacamole-server 必须从源代码构建。不要气馁:从源代码构建 Guacamole 的组件并不像听起来那么困难,而且构建过程是自动化的。您只需要确保提前安装了必要的工具。有了必要的依赖关系,构建 Guacamole 只需几分钟。

于 2010-07-13T19:22:01.053 回答
16

有多种解决方案,但没有一个允许 100% 纯 Web 应用程序(即没有 Flash、Java 或 ActiveX)直接连接到 100% 纯 VNC 服务器。最大的问题是 Web 浏览器无法建立纯 TCP 连接。最接近的是不完整的 WebSockets 标准,但即便如此,它也是一个框架协议,它具有类似 HTTP 的握手来启动它。

即使 Adob​​e Flash 程序可以建立纯 TCP 连接,它们仍然要求您连接的服务器使用端口 843 或您要连接的端口 ( http://code.google.com/p/ doctype/wiki/ArticleFlashSecurity)。

如前所述,Guacamole 需要 Java 代理在其基于 HTML5 的界面和 VNC 服务器之间进行通信。

另一种选择是noVNC ( github ),它在 Javascript/HTML5 中具有完整的 VNC 客户端实现(与 VNC 协议位于代理中的 Guacamole 不同)。然而,noVNC 仍然受到 Javascript 无法建立纯 TCP 连接这一事实的限制。noVNC 使用 WebSockets 连接到服务器。noVNC 包含一个通用的 WebSockets 到 TCP 桥接器,您可以在服务器(或客户端)上运行它,并且它没有额外的依赖项需要安装。

更新:QEMU、PocketVNC 和从 LibVNCServer 派生的项目现在具有内置的 WebSocket 服务器支持,因此不需要 websockify 桥接器来连接 noVNC。另外,我忘记指出我创建了 noVNC 作为免责声明。

于 2010-10-11T00:25:59.890 回答
4

试试tightVNC.com。我上次使用它时,您可以将它指向机器的 IP 并在浏览器中使用它。

于 2010-07-13T19:24:29.947 回答
4

试试 PeerVNC,它是基于 Web 的 vnc 客户端,支持任何现有 VNC 服务器的代理。

https://github.com/InstantWebP2P/peer-vnc

于 2013-04-26T16:19:40.770 回答
1

也许你会使用这个解决方案 - http://www.onlinevnc.com?据我所知,当 Flash 无法与 VNC TCP/IP 端口建立直接连接时,他们已经解决了 Flash 安全问题。我还在他们的网站上看到了将查看器集成到任何其他网站或应用程序的提议。

于 2012-06-17T05:45:40.043 回答
0

除了 Dolph 的回答之外,还有这个,一个用于连接到 VNC 服务器的 Java 小程序。

于 2010-07-13T19:24:31.707 回答