多个设备的IP地址相同?

Same ip address for multiple devices?

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

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

  1. 这个连接能用吗?
  2. 连接是通过互联网发生的还是仅在我的本地发生 路由器?

编辑:阅读@Doon 的回答后,我扩大了我的问题。

假设笔记本电脑的本地地址是192.168.1.10,phone的本地地址是192.168.1.20。 如果我编写我的应用程序以使用这些 IP 地址,它应该像本地网络一样工作。 但是,如果我想让我的笔记本电脑连接到另一台未连接到 WiFi 路由器的 phone,而不是通过 3G 网络连接怎么办? 那么笔记本电脑应该使用哪个IP地址,另一个phone? 由于不允许我使用任何其他服务器,因此我将使用端口转发,即用户将输入显示在其他设备上的 IP 地址。可以在任一设备上启动连接。

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

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

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

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