2012-03-04 34 views
2

我目前正在iPad上開發一個應用程序,該應用程序連接到本地網絡上的客戶端PC並傳遞消息。 在閱讀以下教程後,我在客戶端安裝了python應用程序: http://www.raywenderlich.com/3932/how-to-create-a-socket-based-iphone-app-and-server如何在沒有服務器或端口轉發的情況下遠程訪問網絡

它適用於本地連接。 應用程序打開一個連接端口,我的iPad應用程序使用客戶端和端口的本地IP連接。

如果我想連接到公共IP會發生什麼? 我試過了,它不起作用。我從以下站點獲得了客戶端的公共IP: http://www.whatismyip.com/

和我用同一個python應用程序打開一個端口。 我想,我必須在我的路由器上打開一個端口並將其轉發給客戶端。但有沒有辦法做到這一點,而無需訪問我的路由器的設置。我想實現即時訪問,以便用戶不必擔心設置。

就像Skype一樣,或多人遊戲或其他在線服務。我的問題有點泛泛,不具體。非常遺憾。我希望它也可以幫助其他人。

+1

如果你聽一個端口,你就會成爲一個服務器。你也可以給服務器一個靜態ip或者用dyndns.com設置一個動態的dns – 2012-03-07 13:56:26

回答

3

可以推測,您嘗試訪問的機器位於路由器/ NAT設備後面。換句話說,它不直接連接到互聯網。

路由器負責決定哪些數據報可以在私有網絡和公共網絡之間移動,以及他們應該去哪裏。

Skype,遊戲和在線服務都從私有網絡向外發起連接到公共網絡上的服務器。傳出網絡流量觸發臨時NAT(網絡地址轉換)規則,該規則允許從目的地返回的數據報被路由回專用主機。

但是其他傳入流量將被阻止,除非您在路由器/ NAT中專門設置了一條規則,告訴它在哪裏發送數據。它還會如何知道將數據轉發到哪個地址?

所以只有三種方法可以用一臺機器的NAT路由器後面通信:

  • 它必須首先聯繫。
  • 有人必須配置NAT /路由器以將公共端口轉發到私有機器。
  • 你們都必須聯繫第三臺充當中間人的機器。

爲主機建立完整連接的唯一方法是擁有自己正確路由的公共IP地址。否則,NAT的全部重點就是限制連接。

相關問題