2017-01-16 5 views
0

Ich versuche, Daten von meinem Android-Handy an einen Java-Server zu senden. Ich habe die Server-Anwendung gemacht und einen Client direkt daraus simuliert, indem ich einen "ClientConnexion" -Thread gestartet habe. Es funktioniert gut, die Daten kommen und ich kann es lesen.Senden von Daten von Android Handy an Java-Server

Dann kopiere ich ma "ClientConnexion" -Klasse auf mein Android-Handy, wie es.

Beim Debuggen auf meinem Server, sehe ich, dass die Verbindung korrekt hergestellt ist, aber die Lesefunktion blockiert, als ob Daten nie eingehend wären. Debugging auf Android-Seite zeigt jedoch, dass es (scheint) gesendet wird.

Hier ist mein ClientConnexion Code:

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; 
    } 
} 

Was auf der Android Client-Seite blockieren könnte? Es wird keine Ausnahme ausgelöst.

+0

Bitte zeigen Sie, was der Server versucht zu lesen. – greenapps

Antwort

1

stellen Sie sicher, dass Ihre Verbindung ordnungsgemäß funktioniert, vielleicht Ihr Android Client und Ihr Server in anderen Netzwerksegment? Zuletzt können Sie Ihren Client debuggen oder protokollieren.

+0

Vielen Dank! In der Tat, tt funktioniert, wenn ich mein Android-Handy von meinem persönlichen Wifi trennen und es mit 4G-Netzwerk verbinden. Ich denke, es ist, weil ich versuche, meinen öffentlichen Server IP zu bekommen, während ich eine IP wie 192.168.1.1 erreichen sollte! – Anduriel

Verwandte Themen