ネットワークに関して非常に奇妙な問題があります。PC で実行されているサーバーに安全に接続する andorid アプリを作成しました。PC は NAT の背後にありますが、それぞれのポートは転送されていることに注意してください。また、ポート転送の問題を回避するために PC を DMZ に配置しました。
問題は、WIFI 経由でコードを使用すると完全に動作することですが、3G 経由ではほとんどの場合 (30 のうち 29) が SSLSocket の getOutputStream メソッドでブロックされます (サーバー側で受け入れが発生します)。
問題が何であるかを教えてください。
ありがとうございました
クライアントコード:
E.log("establishing connection: trying to create context");
SSLContext context = SSLContext.getInstance("TLS");
context.init(null, new X509TrustManager[]{new X509TrustManager(){
public void checkClientTrusted(X509Certificate[] chain,
String authType) throws CertificateException {}
public void checkServerTrusted(X509Certificate[] chain,
String authType) throws CertificateException {}
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}}}, new SecureRandom());
E.log("establishing connection: trying to create socket factory");
SSLSocketFactory factory = (SSLSocketFactory) context.getSocketFactory ();
E.log("establishing connection: trying to create socket");
kkSocket = (SSLSocket)
factory.createSocket(host, Integer.parseInt(port));
E.log("establishing connection: trying to create out writer");
out = new PrintWriter(kkSocket.getOutputStream(), true);
E.log("establishing connection: trying to create in reader");
in = new BufferedReader(new InputStreamReader
(kkSocket.getInputStream()));
失敗ログ:
04-15 00:07:59.066: E/Bubu(17340): starting thread
04-15 00:07:59.076: I/System.out(17340): Mon Apr 15 00:07:59 CEST 2013 - establishing connection: trying to create context
04-15 00:07:59.076: I/System.out(17340): Mon Apr 15 00:07:59 CEST 2013 - establishing connection: trying to create socket factory
04-15 00:07:59.076: I/System.out(17340): Mon Apr 15 00:07:59 CEST 2013 - establishing connection: trying to create socket
04-15 00:07:59.146: D/dalvikvm(17340): GC_CONCURRENT freed 190K, 5% free 7530K/7880K, paused 4ms+2ms, total 23ms
04-15 00:08:01.056: I/System.out(17340): Mon Apr 15 00:08:01 CEST 2013 - establishing connection: trying to create out writer
成功:
04-15 00:13:15.506: E/Bubu(17750): starting thread
04-15 00:13:15.526: I/System.out(17750): Mon Apr 15 00:13:15 CEST 2013 - establishing connection: trying to create context
04-15 00:13:15.536: I/System.out(17750): Mon Apr 15 00:13:15 CEST 2013 - establishing connection: trying to create socket factory
04-15 00:13:15.536: I/System.out(17750): Mon Apr 15 00:13:15 CEST 2013 - establishing connection: trying to create socket
04-15 00:13:15.556: I/System.out(17750): Mon Apr 15 00:13:15 CEST 2013 - establishing connection: trying to create out writer
04-15 00:13:15.746: I/System.out(17750): Mon Apr 15 00:13:15 CEST 2013 - establishing connection: trying to create in reader
04-15 00:13:15.746: I/System.out(17750): Mon Apr 15 00:13:15 CEST 2013 - from server:bubu