我有一台通过动态IP 连接到互联网的计算机。所以,我无法通过 TCP / IP 连接到我已编写C#的TCP / IP服务器程序,但它通过静态IP运行良好。 我决定在DuckDNS.Org和http://freedns.afraid.org/上使用 IP转发 DNS服务,以便能够通过以下网址ping我的计算机: test.mooo.com
现在没关系我可以通过这个网络子域ping我的电脑,但我的问题是:
我如何修改我的客户端程序最初只处理IP以连接到我的计算机,该计算机在特定端口运行服务器以使用网址连接到我的计算机?
我试过了:
client = new TcpClient("test.mooo.com", (int)Activity1.settingObj.port);
但它不起作用。 提前致谢。 我使用C#,但我想这是一般的TCP / IP问题。
答案 0 :(得分:1)
Ping仅验证ICMP。那不是TCP。许多防火墙设置为响应或通过ICMP,即使没有其他任何允许。
您的PC可能位于NAT防火墙/网关之后。如果您使用任何类型的Linksys / Netgear类型的DSL或Cable路由器,则需要检查它是否支持端口转发。通常,您可以设置规则以将端口转发到LAN上的单个专用IP地址。
还要检查PC本身的防火墙。验证是否已禁用Windows防火墙,或添加端口例外。
在极端情况下,某些ISP也会阻止传入连接,但通常情况并非如此。
答案 1 :(得分:0)
经过多次挣扎,我有两种方法可以实现。首先,当我们能够设置路由器设置为我们提供静态IP时,在许多情况下它是不可能的。 第二种方式是使用VPN服务,为我们提供静态“专用”IP。这些服务不是免费的,此设施每月收取订阅费。但是,它的工作原理。我试过http://vpnstaticip.com/他们给出了一个非常有限的试用期来测试vpn。我已经测试了,结果非常好,他们给IP静态。它对我有用,虽然它很昂贵,我需要看到一个很好的理由来使用它。