2017-07-31 38 views
-3

我正在開發一個Android應用程序,它需要通過互聯網發送數據而不使用WiFi。通過移動數據的套接字連接

是否可以通過移動數據將套接字連接到服務器?

我的應用程序適用於WiFi,但不適用於移動數據。

+0

你對「不適用於移動數據」有何意義?你能分享導致問題的代碼嗎? –

+0

「移動數據」和「WiFi」與設備的*硬件*訪問互聯網的方式不同。無論所使用的*硬件*連接類型如何,您的應用程序都可以在更高級別上運行,並且應能夠使用TCP或UDP正常與Internet服務器進行通信。如果您在使用移動數據時遇到問題,移動運營商可能會阻止其數據訪問(在這種情況下,您的應用無法執行任何操作,問題出在用戶的移動帳戶上),或者您可能在執行某項操作時出錯你的套接字代碼。請提供[mcve]。 –

+0

我猜測,但可能重複的https://stackoverflow.com/questions/32411855/android-doesnt-work-if-i-use-mobile-data-instead-of-wifi/? – Luke

回答

0

你真的沒有說什麼問題,所以這裏是一個瘋狂的猜測:

你在本地服務器上開發,在地址192.168.something.something。在您的家庭WiFi上一切正常,在移動數據上它無法找到服務器。

如果是這樣,192.168。*。*是本地地址。它們綁定到你的路由器,並且請求它們永遠不會到達因特網,因爲它們是在本地處理的,如果連接到該路由器就完全沒問題。然而,在移動數據上,你並沒有使用可以解析本地地址的路由器,而是一個不知道你在問什麼的移動塔 - 它不知道192.168。*。*是你的電腦,所以你不能建立連接。

大部分情況下,通過WiFi和移動數據傳輸數據應該沒有什麼區別。如果有的話,問題可能在其他地方。因此,爲了使它適用於移動數據,您需要一臺真正的遠程服務器(如果您的ISP允許,它可以託管在您的計算機上,但這是另一個話題)。

您確實需要爲您的問題提供更好的解釋 - 您訪問的是哪個地址以及錯誤是什麼?我只有這種預感(對此我非常有信心),因爲我在網站某處有至少一個相同解決方案的答案(問題非常相似),這意味着您可能會發現它使用Google (編輯:yup,here it is)。

+0

非常感謝。我目前使用本地地址來運行我的服務器。那麼獲得公共IP的最佳方式是什麼?我的意思是,有沒有辦法讓公共服務器免費或我需要每月付費? @Luke –

+0

有沒有辦法將我的公共ip地址連接重定向到我的服務器地址? @Luke –