我正在创建一个 TcpListener,我希望其他计算机的客户端能够加入我的监听器。
我已经阅读并理解我必须进行端口转发,但这对我来说没有任何意义 - 当我发布我的应用程序时,我希望其他人创建这个监听器,我不能告诉他们做端口转发。
是否有可能创建一个客户端无需端口转发就可以加入的 TcpListener?谢谢你。
我正在创建一个 TcpListener,我希望其他计算机的客户端能够加入我的监听器。
我已经阅读并理解我必须进行端口转发,但这对我来说没有任何意义 - 当我发布我的应用程序时,我希望其他人创建这个监听器,我不能告诉他们做端口转发。
是否有可能创建一个客户端无需端口转发就可以加入的 TcpListener?谢谢你。
好吧,让我们先尝试清除一些东西。
使用端口转发的主要原因是因为您在内部网络前面有一个 NAT 路由器。设置端口转发是指示 NAT 路由器将流量转发到公共接口上的某个端口到内部计算机上的端口。
如果您没有 NAT 路由器,则不需要端口转发。
今天的许多路由器都支持UPnP,这是一种请求路由器创建特定端口转发的技术。一个合适的库可能是ManagedUPnP。
但是,您仍然需要弄清楚路由器的公共 IP 以及您打开的端口,并将其与其他应用程序通信。
如果您的路由器不允许 UPnP 或存在其他防火墙规则,则您无法正确设置端口转发。
您可以在 PC 上创建服务器应用程序和转发端口。客户端应用程序(您将发布的这个)将连接到您的电脑,以便它们可以在 NAT 上。您也可以将您的应用程序与一些 php/asp 页面结合起来,但这取决于您要发送的数据。如果它是某种 PC 统计数据,如正常运行时间、硬件等。您只需在客户端应用程序中使用 http 查询到您创建的网站脚本(例如 mypage.com/?uptime=100&ram=2gb&hash=xxxx 等)
只有服务器(接受 TCP 请求的计算机)需要转发端口。
常见的模型是您(服务的开发者/生产者)托管服务器。然后客户(订阅您的服务的人)使用 IP 或 URL 连接到您的服务。如果您的服务位于防火墙后面(您的计算机和 Internet 调制解调器之间有一个路由器),那么您将不得不转发端口。您可能还必须在 Window 的防火墙中打开端口,但我希望您已经这样做了。在这个模型中,客户不必对他们的路由器做任何事情(就像使用网络浏览器一样)。
如果您要在客户托管服务的地方制造产品,那么他们将不得不处理端口问题。在这种情况下,您可以尝试像 Albin Sunnanbo 建议的 ManagedUPnP,或者将它们重定向到解释如何设置端口转发的众多站点之一。