2017-07-31 41 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 –