2012-11-13 150 views
0

我正在创建一个TcpListener,并且我希望来自其他计算机的客户端能够加入我的侦听器。C#TcpListener外部IP

我已经阅读并理解我必须做端口转发,但它对我没有任何意义 - 当我发布我的应用程序时,我希望其他人创建此监听器,并且我无法说出他们做端口转发。

有没有可能创建一个TcpListener,客户端将能够加入没有端口转发? 谢谢。

+0

你在哪里看过你有做端口转发? –

+0

欢迎使用stackoverflow。这个问题可能会得到更好的答案,如果你更清楚一点,我不确定你在问什么。 – brentonstrine

回答

1

那么,我们先尝试清除一些问题。

使用端口转发的主要原因是因为您在内部网络前有NAT路由器。要设置端口转发,请指示NAT路由器将流量转发到公共接口上的某个端口,转发到内部计算机上的端口。

如果您没有NAT路由器,则不需要端口转发。

今天很多路由器都支持UPnP,这是一种技术,可以请求路由器创建特定的端口。一个合适的库可以使用ManagedUPnP

但是,您仍然需要弄清楚路由器的公共IP以及您打开了哪个端口并将其传送到其他应用程序。

如果您的路由器不允许UPnP或其他防火墙规则就位,则无法正确设置端口转发。

0

您可以在PC上创建服务器应用程序和转发端口。客户端应用程序(您将发布此应用程序)将只连接到您的电脑,以便他们可以在NAT上。你也可以将你的应用程序与一些php/asp页面结合起来,但它取决于你想发送的数据。如果它是某种类型的PC统计信息,例如正常运行时间,硬件等,则只需在客户端应用程序中使用http查询即可创建网站脚本(例如mypage.com/?uptime=100 & ram = 2gb & hash = xxxx等。 )

0

只有服务器(接受TCP请求的计算机)需要转发端口。

通用模型是您(服务的开发人员/生产者)承载服务器。然后,客户(订阅您的服务的用户)使用IP或URL连接到您的服务。如果您的服务位于防火墙之后(您的计算机和互联网调制解调器之间有路由器),则必须转发该端口。您可能还必须在Window的防火墙中打开端口,但我希望您已经完成了这一步。在这种模式下,客户不必对路由器做任何事情(就像使用网络浏览器一样)。

如果您正在制作一个产品,您的客户托管服务,那么他们将不得不处理端口问题。在这种情况下,您可以尝试ManagedUPnP,例如Albin Sunnanbo建议或将其重定向到解释如何设置端口转发的许多站点之一。