我正在编写自己的聊天应用程序,该应用程序使用TCP上的服务器客户端模型。这只是为了自己的学习。
当我通过本地网络连接时,没有任何障碍。据我所知,其他本地IP可直接使用。示例:192.168.1.28连接到服务器192.168.1.90
然后我试图移动是通过互联网连接。
我已将路由器设置为通过端口4296将tcp连接转发到192.168.1.90上的服务器。
然后我查找路由器的公共IP地址。它显示101.1.1.20
然后我在另一个朋友的PC上用另一个连接设置我的客户端。并通过端口4296将客户端连接到IP:101.1.1.20
执行失败了......
经过进一步调查,我的路由器的公共IP似乎是共享公共IP。这意味着我的路由器顶部还有另一层我认为
有关何处进一步的提示?我很难过。
答案 0 :(得分:0)
您可以尝试http://www.whatismyip.com/之类的内容,它可以告诉您连接其他人时看到的公共IP地址。
这可能不足以允许您从外部进行连接(因为可能会将某些内容配置为阻止所有传入连接),但它至少可以让您查看路由器的IP是否与路由器的IP相同外面的世界看到了你。
您可能还想尝试在您的端口上交换字节顺序,因为这是人们在客户端和/或服务器程序中经常出错的地方,如果您在本地端口上都出错,那么它可以在那里工作但是如果您将端口配置为匹配,则不能通过您的路由器(因此,自4296 == 0x10c8以来,在路由器配置为4296时也尝试检查端口0xc810 == 51216)。
还值得尝试连接telnet而不是你自己的客户端只是为了查看连接是否成功,因为可能错误的东西更少。使用wireshark(或tcpdump)之类的东西可以告诉你在尝试时是否有任何SYN数据包到达你的服务器端。