2017-01-16 8 views
0

Android携帯からJavaサーバーにデータを送信しようとしています。 "ClientConnexion"スレッドを開始することによって、サーバーアプリケーションを実行し、そこから直接クライアントをシミュレートしました。 それはうまく動作し、データが来て、私はそれを読むことができます。Android携帯からJavaサーバーにデータを送信

はその後、私はそれとして、私のAndroidの携帯電話にミリアンペア「ClientConnexion」クラスをコピーします。

私のサーバー上でデバッグのとき、私は、接続が正しく確立されていることがわかりますが、データが入ってくることはなかったかのように機能の読み取りが、ブロックしています。 しかし、Android側のデバッグでは、それが送信されたようです。ここで

は私ClientConnexionコードです:

import java.io.BufferedInputStream; 
import java.io.IOException; 
import java.io.PrintWriter; 
import java.net.Socket; 
import java.net.UnknownHostException; 
import java.util.Random; 

public class Client implements Runnable{ 

    private Socket connexion = null; 
    private PrintWriter writer = null; 
    private BufferedInputStream reader = null; 

    public Client(String host, int port){ 
     try { 
      connexion = new Socket(host, port); 
     } catch (UnknownHostException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 


    public void run(){ 

     try { 

      writer = new PrintWriter(connexion.getOutputStream(), true); 
      reader = new BufferedInputStream(connexion.getInputStream()); 

      // COMMAND is received by server when emulating client directly from it 
      // COMMAND is NOT received when sent from Android mobile 
      writer.write("COMMAND"); 
      writer.flush(); 

      System.out.println("COMMAND sent"); 

      String response = read(); 
      System.out.println("Response : " + response); 

      } 
     catch (IOException e1) { 
      e1.printStackTrace(); 
     } 

    writer.write("CLOSE"); 
    writer.flush(); 
    writer.close(); 

    } 

    private String read() throws IOException{ 
     String response = ""; 
     int stream; 
     byte[] b = new byte[4096]; 
     stream = reader.read(b); 
     response = new String(b, 0, stream); 
     return response; 
    } 
} 

のAndroidクライアント側で遮断することができるもの?例外はスローされません。

+0

サーバーが読み取ろうとしているものを表示してください。 – greenapps

答えて

1

は、異なるネットワークセグメントに多分あなたのAndroidクライアントとサーバー、接続が正常に動作していることを確認してください?最後に、クライアントのデバッグやログ記録を行うことができます。

+0

ありがとう!事実なら、私の個人的なWifiから私のAndroidの携帯電話を切断し、それを4Gネットワ​​ークに接続すると動作します。私は192.168.1.1のようなIPに到達しなければならない間に自分の公開サーバのIPを取得しようとしているからだと思います! – Anduriel

関連する問題