多个设备的IP地址相同?

时间:2015-01-10 06:04:24

标签: networking tcp ip

我想开发一个通过TCP / IP连接Windows桌面应用程序的Android应用程序。 但是我对网络知之甚少,所以如果这是一个非常基本的疑问,请原谅我。

我的基于Windows的笔记本电脑和Android手机通过相同的WiFi路由器连接到互联网。 现在我检查了笔记本电脑的IP地址以及使用网站的电话。 两者都一样! 如果两者具有相同的IP地址,那么为了实现这些设备之间的联网,我将选择不同的端口号集。

  1. 这种联系会起作用吗?
  2. 连接是通过互联网进行还是仅在我本地进行 路由器?
  3. 编辑:在阅读@Doon的回答后,我扩大了我的问题。

    我们说笔记本电脑的本地地址是192.168.1.10,电话的本地地址是192.168.1.20。 如果我将我的应用程序编码为使用这些IP地址,它应该像本地网络一样工作。 但是,如果我希望我的笔记本电脑连接另一部未连接到WiFi路由器的电话,而不是3G网络。 那么哪个IP地址应该用于笔记本电脑和另一部手机? 由于我不允许使用任何其他服务器,我将使用端口转发,即用户将键入其他设备上显示的IP地址。可以在任一设备上启动连接。

    如果您还可以通过编程方式显示如何执行此操作,那将非常有用。 我的Windows应用程序是使用Qt。使用C ++开发的。

1 个答案:

答案 0 :(得分:1)

您的所有设备都使用NAPT(网络地址端口转换)共享1个外部或WAN IP地址。在LAN内部,每个设备都有自己的地址。所以是的它会起作用,但你需要使用内部地址和设备实际的IP地址,而不是通过外部服务感知地址。

至于本地连接或通过路由器,这取决于您连接的位置。如果两个端点都在您的局域网或同一子网上,则路由器不会参与。因此,在手机和桌面之间的平均家庭网络中,两者都连接到同一网络,通过wifi说,它们很可能是第2层相邻的(有关第2层和第3层的更多信息,请参阅OSI 7层模型)。但是,一旦他们不在同一个网络上,那么将涉及路由并且将使用您的路由器。如果手机连接到3G或手机数据网络,并且您希望它与家庭网络上的桌面通信,则需要处理路由器上的端口转发以及其他此类有趣的事情。

关于更新。一旦你离开本地网络就会变得更加复杂,特别是IPv4因为地址已经用完所以越来越多地使用nat或IPv6,有6到4个网关。您是否希望笔记本电脑启动连接到手机或手机连接到笔记本电脑?但通常您需要在接口上迭代地址。然后连接外部服务以获取外部IP地址并进行比较,看它们是否相同。如果两个端点都是动态分配的,则需要某种位置机制,动态DNS可以是定位器服务等。