C#TcpListener外部IP

时间:2012-11-13 19:51:16

标签: c# sockets tcp tcpclient tcplistener

我正在创建一个TcpListener,我希望其他计算机上的客户端能够加入我的监听器。

我已经阅读并理解我必须做Port Forwarding,但这对我没有任何意义 - 当我发布我的应用程序时,我希望其他人创建这个Listener,我无法告诉他们做端口转发。

是否有可能创建一个TcpListener,客户端可以在没有端口转发的情况下加入? 谢谢。

3 个答案:

答案 0 :(得分:1)

好吧,让我们先尝试清除一些事情。

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

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

今天许多路由器支持UPnP,这是一种请求路由器创建特定端口转发的技术。要使用的合适库可能是ManagedUPnP

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

通用模型是您(服务的开发人员/生产者)托管服务器。然后,客户(订阅您服务的人)使用IP或URL连接到您的服务。如果您的服务位于防火墙后面(您的计算机和Internet调制解调器之间有路由器),则必须转发该端口。您可能还需要在Window的防火墙中打开端口,但我希望您已经这样做了。在此模型中,客户无需对其路由器执行任何操作(就像使用Web浏览器一样)。

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