如何使用 .NET 构建类似 Opera 的功能?
当我们运行 Opera 浏览器并启用 Opera Unite 时,它会在 Web 上共享我们的桌面,我们可以通过 Internet 访问它而无需静态 IP,这是如何工作的?
您应该运行自己的 DNS 服务器。并且每当用户打开浏览器并登录时,您应该将用户的当前 IP 地址发送到您的服务器并在您的本地 DNS 中更新。由于您将只有一个子域 (desktop.operaunitecom),因此每当有人点击您的 url 时,它首先会转到 operaunite DNS 服务器,从中获取您的 IP 地址。当用户的会话关闭时,您应该删除 DNS 条目。这可能是一个可能的解决方案。
您需要将您的动态 IP 映射到某个静态 DNS 名称。一种易于使用的解决方案是 DynDNS 服务。对于这些,您可以获得一个小型客户端程序(或者好的路由器已经实现了一个 dyn dns 客户端),它只是将您当前的 IP 地址映射到一个特定的 dns 名称。
完成此操作后,这取决于您喜欢它的可变性: - 您是否有一位大师应该能够查看各种客户端 PC 以寻求帮助?- 你想连接两个都有动态ips的客户端吗?
在第一种情况下,您的主人总是确保将他当前的 IP 地址映射到 dns 名称。在路由器上,可能需要一些端口转发,并且您的客户端会获得一个启用反向模式的 vnc 客户端。这使每个人都可以建立与您的主服务器的连接并共享桌面,而无需在客户端站点上进行任何更改。只有在主站点上才需要做一些事情(dynDns 和端口转发)。
在第二种情况下,它有点复杂。现在您有两个喜欢相互连接的动态 IP。这通常是通过某种中介来完成的。意味着两台机器都连接到某个主服务器(可通过某个 DNS 名称访问)。现在两台机器都与主服务器建立了双向连接,主服务器将简单地从第一个客户端获取数据并将其转发给第二个客户端,反之亦然。为了减轻主控的所有负担,主控可能会在第一步将客户端 A 的 IP 地址发送给 B,反之亦然。然后在第一步中,双方都试图直接相互连接。这种方法称为 UDP 打孔,并不总是有效,这会导致回退以使用主服务器。
所有这些技术都不必与.Net 做任何事情。它是关于以太网、TCP/IP、互联网等的纯知识。由于你必须在这个低级领域做很多工作,我认为 C# 不是完成这项任务的理想框架。也许将 GUI 作为最后一步,但对于幕后的实际工作,您需要一些体面的网络知识,这些知识大部分独立于您使用的编程语言。