繁体   English   中英

Android应用无法连接到移动数据上的服务器

[英]Android app cannot connect to server on mobile data

我有一个Android应用程序,它使用Sockets(和ssl)连接到服务器。 这在wifi上工作正常,但在移动数据上却没有。 这是连接代码:

// Load the server keystore
KeyStore keyStore = KeyStore.getInstance("BKS");
keyStore.load(context.getResources().openRawResource(R.raw.sys), certificatePassword.toCharArray());

// Create a custom trust manager that accepts the server self-signed certificate
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
trustManagerFactory.init(keyStore);

// Create the SSLContext for the SSLSocket to use
SSLContext sslctx = SSLContext.getInstance("TLS");
sslctx.init(null, trustManagerFactory.getTrustManagers(), new SecureRandom());

// Create SSLSocketFactory
SSLSocketFactory factory = sslctx.getSocketFactory();

// Create socket using SSLSocketFactory
client = factory.createSocket(ipAddress, port); <-- Here application hangs

正如我在上面的描述中所描述的,应用程序挂起在这一行,我得到一个异常:java.net.ConnectException:连接失败... ETIMEDOUT(连接超时)

我的应用清单定义如下:

<uses-sdk
    android:minSdkVersion="19"
    android:targetSdkVersion="21" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

...
activities, etc.

我手机上的其他所有应用都能正常使用移动数据。 任何提示?

如果您在本地运行您的应用服务器(即在您的计算机上而不是在云服务器上等),那么您的应用程序将仅在WiFi上运行,前提是您的PC和移动设备连接到同一个wifi。

如果您在连接时切换到云服务器并提供服务器的相应IP地址,那么您将不会遇到上述问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM