2012-04-02 10 views
0

Ich habe die Suche nach Stunden jetzt verwendet, konnte aber keine Antwort finden, die zu meiner Frage passt. Ich möchte einfach eine TCP-Netzwerkverbindung zwischen einem PC und einem Android-Gerät erstellen. Das Senden von Daten (sagen wir eine einfache Zeichenfolge) von Android zu PC funktioniert eigentlich ohne Probleme mit Socket und ServerSocket. Das Senden von Daten vom PC an Android funktioniert jedoch nicht. Es gibt nichts erhalten. Hier ist der Code:Netzwerkverbindung vom PC zum Android Gerät

Server bei Android-Gerät:

try { 
     ServerSocket serverSocket = new ServerSocket(1234); 

     //tell logcat the server is online 
     Log.d("TCP", "C: Server Online..."); 

     while (true) { 

      Socket client = serverSocket.accept(); 

      BufferedReader in = new BufferedReader(new InputStreamReader( client.getInputStream())); 
      String input = in.readLine(); 
      // Do what ever you want with input String 

      client.close(); 
     } 
    } catch (Exception e) { 
     Log.d("TCP", "C: " + e); 
    } 

-Client auf PC:

try { 

     InetAddress serverAddr; 

     try { 
      serverAddr = InetAddress.getByName(IPAdresse); 

      socket = new java.net.Socket(serverAddr,portAdresse); 
      socket.setSoTimeout(1000); 
     }catch (ConnectException e) { /*e.printStackTrace();*/ } 

     PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true); 
     out.println(nachricht); 

     socket.close(); 

    }catch (SocketException e) { 

// e.printStackTrace(); try {socket.close(); } catch (Ausnahme e1) {}

}catch (IOException e) { 

// e.printStackTrace(); } try {socket.close(); } catch (Ausnahme e1) {}

}catch (NullPointerException e) { 

// e.printStackTrace(); try {socket.close(); } catch (Ausnahme e1) {/ e1.printStackTrace(); /}

} 

Ich habe absolut keine Ahnung, warum es nicht funktioniert. Ich vermute, dass ein Problem in meinem Android-Code oder einer Einstellung auf dem Android-Gerät besteht. Vielleicht hat jemand schon die gleichen Probleme und eine passende Lösung für mich. Würde mir sehr helfen. Dank

+0

Geben Sie Ihren gesamten Code ein. –

+1

überprüfen Sie die Ausnahmen, Sie sind nicht protokollieren/drucken sie – oers

Antwort

0

Ändern Sie diese Zeile:

PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true); 

dazu:

PrintWriter out = new PrintWriter(socket.getOutputStream(), true); 

auf Ihrem PC-Client und sehen, ob es funktioniert.

+0

Nein, funktioniert auch nicht. Ich habe den Emulator versucht und ein APK für die Android-Zelle erstellt, aber beide haben nicht funktioniert. Vielleicht habe ich für den Emulator die falsche IP benutzt, ich nicht. Ich musste die ServerSocket in einen Thread setzen, da die socket.accept() die folgenden Befehle blockiert. Aber nichts passiert, wenn ich die empfangene Nachricht in ein Textfeld drucken möchte. Ist es richtig, dass ich die IP verwenden kann, was in den Einstellungen des Android-Systems erwähnt wird? Falls es installiert ist und auf dem Gerät selbst und nicht am Emulator läuft? Danke für Hilfe – user1307940

0

kann ich von ein paar Dinge denken, die hier passieren kann:

  1. Android nur verbindlich die Buchse
  2. Es gibt eine fehlende Berechtigung am Telefon
  3. Eine Firewall irgendwo 127.0.0.1 verhindert Kommunikation
  4. Du

Für Probleme wie thi nicht-Adresse auf die richtige IP-Anschluss s Ich gebe viele Druckanweisungen ein oder gehe durch den Code, während ich die Daten mit Wireshark schnüffele.

Verwandte Themen