Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用.NET构建类似Opera unite的功能?_C#_.net_Opera - Fatal编程技术网

C# 如何使用.NET构建类似Opera unite的功能?

C# 如何使用.NET构建类似Opera unite的功能?,c#,.net,opera,C#,.net,Opera,如何使用.NET构建类似Opera unite的功能 当我们运行opera浏览器并启用opera unite时,它将在web上共享我们的桌面,我们可以在没有静态IP的情况下通过internet访问它,这是如何工作的?您应该运行自己的DNS服务器。每当用户打开浏览器并登录时,您都应该将用户的当前IP地址发送到服务器并在本地DNS中更新。由于您将只有一个子域(desktop.operaunitecom),所以每当有人点击您的url时,它会首先进入operaUniteDNS服务器,从那里获取您的IP地

如何使用.NET构建类似Opera unite的功能


当我们运行opera浏览器并启用opera unite时,它将在web上共享我们的桌面,我们可以在没有静态IP的情况下通过internet访问它,这是如何工作的?

您应该运行自己的DNS服务器。每当用户打开浏览器并登录时,您都应该将用户的当前IP地址发送到服务器并在本地DNS中更新。由于您将只有一个子域(desktop.operaunitecom),所以每当有人点击您的url时,它会首先进入operaUniteDNS服务器,从那里获取您的IP地址。当用户会话关闭时,您应该删除DNS条目。这可能是一个可行的解决方案。

您需要将动态IP映射到某个静态DNS名称。一个易于使用的解决方案是DynDNS服务。对于这些,您可以得到一个小的客户端程序(或者好的路由器已经实现了一个dyn dns客户端),它可以简单地将您当前的ip地址映射到一个特定的dns名称

完成后,这取决于您喜欢的变量: -您是否有一个能够在各种客户端PC上寻求帮助的主机? -您想连接两个都具有动态IP的客户端吗

在第一种情况下,您的主机总是确保将其当前ip地址映射到dns名称。在路由器上,可能需要一些端口转发,您的客户机将获得一个启用反向模式的vnc客户机。这使每个人都可以建立到您的主机的连接并共享桌面,而无需对客户端站点进行任何更改。只有在主站点上才需要做一些事情(dynDns和端口转发)

第二种情况稍微复杂一点。现在,您有两个动态IP,它们喜欢相互连接。这通常是通过某种调解人来完成的。表示两台计算机都连接到某个主机(可通过某个DNS名称访问)。现在,这两台机器都与主机有双向连接,主机只需从第一台客户机获取数据并将其转发给第二台客户机,反之亦然。为了从主机上卸下所有的负担,在第一步中,主机可能会将客户端a的ip地址发送给B,反之亦然。然后,在第一步中,双方都试图直接相互连接。这种方法称为UDP打孔,并不总是有效,这会导致使用主控打孔

使用第二种方法的两个示例是和

所有这些技术都与.Net无关。这是关于以太网、TCP/IP、internet等的纯粹知识。由于您必须在这一低级领域做大量工作,我认为C#不是完成此任务的理想框架。也许把GUI作为最后一步,但对于真正的幕后工作,您需要一些体面的网络技术,这些技术主要独立于您使用的编程语言