2016-01-24 56 views
0

我想與朋友創建一個Android應用程序(我的第一個)。這個應用程序的主要部分是關於兩個設備之間的通信。電話A需要能夠將信息發送給電話B,反之亦然。我的問題是「*建立這種溝通的最佳解決方案是什麼?」 ...在Android中溝通的最佳解決方案

目前我們正試圖用套接字來做到這一點。一個電話是服務器,另一個是客戶端,然後他們進行通信。問題是它似乎沒有工作,因爲客戶端永遠不會到達服務器(超時)。這可能是因爲客戶端輸入的IP地址是路由器地址...

另一種解決方案是使中間網絡服務器通過Http與手機進行通信。但我們認爲它可能會消耗大量的互聯網連接。我們如何知道這一點?

請幫助我們選擇這兩個或另一個之間的最佳解決方案,如果你有一個想法。

編輯:我忘了提及兩個設備不在同一個本地網絡,所以他們需要與互聯網通信。

謝謝。 Onyx

回答

0

如果您的設備支持,您可以使用藍牙或Wifi-P2P。 Check here

如果正確操作,您現有的系統也可以正常工作。爲此,你可以在這裏給你的代碼。

否則,如果服務器和客戶端位於本地(可能是WiFi)網絡中,則可以使用UDP廣播。

1

我可以推薦兩種方法:

  1. 最快的方法是解決這一問題與設備之間的直接套接字連接。也許它不適用於你的情況,因爲其中一部電話位於本地網絡中。那麼你通常無法從外部訪問IP,這是網絡地址轉換的原因。所以你根本不應該連接wifi並找出你的設備的IP地址。這裏是更多信息:https://de.wikipedia.org/wiki/Network_Address_Translation

也許下面的教程對你很有幫助。 http://android-er.blogspot.co.at/2014/02/android-sercerclient-example-client.html

  • 取決於正是你想要達到什麼樣的,你也可以建立一個REST的後端。如果您需要高性能和快速通信,則不應使用此解決方案。爲了構建一個REST-Backend,我可以推薦node.js和swagger,也許你應該看看這些技術。
  • +0

    非常感謝您的回答。當你說「根本不應該連接wifi並找出你的設備的IP地址」時,你的意思是連接3G,這樣我就可以擁有自己的IP地址了? –

    +0

    是的。當您位於網絡中時,來自外部的IP地址與網絡內的IP地址不同。這是因爲路由器只有一個用於傳出連接的IP地址。希望這可以幫助你。 –