2014-03-19 174 views
0

我正在编写自己的聊天应用程序,它通过TCP使用服务器客户端模型。这只是为了自己的学习。客户端服务器通过共享公共IP地址?

当我通过本地网络连接时,没有任何问题。这我知道,因为其他本地IP可直接使用。例如:192.168.1.28连接到服务器192.168.1.90

然后我试图移动是通过互联网连接。

我已经通过端口4296.

然后我去找我的路由器的公网IP地址,我的路由器端口转发TCP连接设置为我的192.168.1.90服务器。它显示101.1.1.20

然后我用另一个连接在另一个朋友的PC上设置我的客户端。而executeby连接客户端IP:101.1.1.20端口4296

它失败....

经进一步调查,看来我的路由器的公网IP是一个共享的公共IP。这意味着我的路由器上还有另外一层,我想

有关如何进一步了解此任务的任何提示?我很难过。

回答

0

你可以尝试像http://www.whatismyip.com/,它可以告诉你,被别人看到的公网IP地址,当你连接到它们。

这可能不足以让您从外部进行连接(因为有可能配置了某些功能来阻止所有传入连接),但它至少可以让您了解路由器的IP是否与路由器的IP相同外面的世界会看到你。

您可能还想尝试交换您的端口上的字节顺序,因为这是人们在他们的客户端和/或服务器程序中经常出错的地方,并且如果您在本地端口上遇到了错误,它将起作用如果你配置了端口匹配,那么你的路由器没有通过你的路由器(所以,因为4296 == 0x10c8,当你的路由器配置为4296时,也尝试检查端口0xc810 == 51216)。

也值得尝试通过telnet,而不是你自己的客户端连接只是为了看看,如果连接成功,因为有较少的事情,可能错了。也可以使用诸如wireshark(或tcpdump)之类的东西来告诉你是否有任何SYN数据包在您尝试这种情况时到达服务器端。

+0

好吧。我得到的路由器ip是从我的ip。这是外部世界所看到的。但试图连接到该IP到达我的服务器什么也没有。我的怀疑是因为公开的ip是共享ip吗? – ivanwong888899999

+0

通常,公共可用的IP对于与ISP的连接而言是唯一的,因此如果您的路由器配置为在该端口上传递连接,它将传递SYN数据包。 – GrumpyOldTroll

+0

我检查了我的路由器....它表明自己是另一个不同于whatismyip的公共IP的IP。嗯 – ivanwong888899999

相关问题