2015-01-10 91 views
0

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

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

  1. 此连接是否工作?
  2. 连接是通过互联网进行还是仅通过我的本地 路由器进行?

编辑:在阅读@Doon的答案后,我拓宽了我的问题。

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

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

回答

1

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

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

关于更新。一旦你离开本地网络,它变得更加复杂,尤其是IPv4,因为地址已经耗尽,所以越来越多地使用NAT或IPv6与6到4网关。你想要笔记本电脑发起连接到手机或电话到笔记本电脑?但通常你需要在你的界面上迭代你的地址。然后连接外部服务以获取您的外部IP地址并比较并查看它们是否相同。如果两个端点都是动态分配的,则需要某种位置机制,可能是动态DNS可能是定位器服务等。

+0

那么如何找到设备的实际IP地址? –

+1

在windows ipconfig/all应该显示你的IP地址。可能类似于192.168.0.x或另一个RFC 1918指定的空间。至于手机,你可以在WiFi下的设置中看到它。但。你在Windows中编写什么语言?如果你正在寻求以编程方式获得它将是郎依赖。至于android见http://stackoverflow.com/questions/6064510/how-to-get-ip-address-of-the-device – Doon

+0

我使用C + +与Qt为我的Windows应用程序。 –