【问题标题】:Web based VNC client? [closed]基于 Web 的 VNC 客户端? [关闭]
【发布时间】:2011-03-15 12:20:36
【问题描述】:

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

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

在这个领域有什么好的入门资源?

2013 年 10 月 29 日更新

只是仅供参考:当时我最终按照@Dolph 的建议使用guacamole
那是:

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

【问题讨论】:

    标签: vnc vnc-viewer


    【解决方案1】:

    查看Guacamole project

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

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

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

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

    【讨论】:

    • 非常感谢,我实际上想使用 guacamole,但 java 代理是个问题,因为我的公司在他们的服务器上没有它,而且我的老板不喜欢安装它的要求,如 tomcat.. . 你认为它们就像一个插件或其他东西,使它在没有 servlet 容器的服务器上工作?
    • 我赞同 Dolph 的“应该是微不足道的”——我对 Java 相当无知,但发现它很容易设置。
    【解决方案2】:

    有多种解决方案,但没有一个允许 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。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • TightVNC 的解决方案要求 服务器 运行 TightVNC。 TightVNC 服务器有一个选项来允许传入的 Web 请求,它会通过一个小程序对 VNC 进行响应,然后返回给它自己。换言之,“客户端”不能用于连接任意 VNC 服务器。 tightvnc.com/winst.php#start_java
      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

        • 试过了,不行。 OSX 机器,使用桌面/安卓客户端愉快地连接)。基于 Flash。
        【解决方案6】:

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

        【讨论】:

          猜你喜欢
          • 2010-11-16
          • 1970-01-01
          • 2011-02-13
          • 1970-01-01
          • 2013-03-20
          • 2021-12-11
          • 2011-02-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多