2015-01-10 90 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應用程序。 –