2017-01-30 2 views
1

Ich habe die folgende Situation. Ich habe einen lokal gehosteten TCP/IP-Server auf Port 8090 Ich muss in der Lage sein, einen Befehl von meiner Android-Anwendung zu senden. Der Server sollte diesen Befehl übernehmen und eine Reihe von Informationen zurückgeben, die ich brauche. Ich habe keinen Zugriff auf die Server- oder Serverprotokolle.Müssen mit einem lokal gehosteten TCP/IP-Server in Java Android Studio kommunizieren

Was ich habe

einfache Socket-Verbindung versuchen, die einfach gut zu verbinden scheint. Jedoch nach dem Verwenden von printWriter und Senden des Servers mein Befehl. Der BufferedReader bleibt bei reader.readLine() oder .read() hängen. Ich nehme an, dass der Server nicht auf meinen Befehl reagiert, schreibt der Schreiber nicht richtig (Wie kann ich das sagen?) Oder diese Methode ist für die vorliegende Situation nicht korrekt.

Ich habe versucht, es mit URL und HTTPURLConnection Objekte zu tun, aber ich bin mir nicht sicher, ob ich es richtig mache.

Ich habe Code, den ich posten kann, aber ich denke, es ist noch nicht relevant.

Was schlagen Sie vor?

angeforderten Code

     Socket socket = new Socket("10.0.0.16", 8090); 

         //Send message to server 
         OutputStream os = socket.getOutputStream(); 
         OutputStreamWriter osw = new OutputStreamWriter(os); 
         BufferedWriter bw = new BufferedWriter(osw); 

         String number = "message"; 

         String sendMessage = number + "\n"; 
         bw.write(sendMessage); 
         bw.flush(); 
         System.out.println("Message sent to the server : "+sendMessage); 
         Thread.sleep(10000); 
         //Get the return message from the server 
         InputStream is = socket.getInputStream(); 
         InputStreamReader isr = new InputStreamReader(is); 
         BufferedReader br = new BufferedReader(isr); 
         String message = br.readLine(); 
         System.out.println("Message received from the server : " +message); 
+1

Können Sie den Server debuggen? Es klingt wie die Lösung wird gefunden, indem Sie sehen, was der Server tut/empfängt. –

+0

Wenn der Empfänger versucht, eine Zeile zu lesen, sollten Sie sicher sein, dass der Absender nach dem Senden eine Zeile gesendet oder den Socket geschlossen hat. Dann geht alles gut. Was machst du stattdessen? – greenapps

+0

'habe Code, den ich posten kann, aber ich denke es ist noch nicht relevant. Natürlich ist es relevant, da Ihr Code noch nicht in Ordnung ist. – greenapps

Antwort

1

lokalen Host an das Gerät, auf dem bezieht sich der Code ausgeführt wird, in diesem Fall der Emulator.

Wenn Sie auf den Computer verweisen möchten, auf dem der Android-Simulator ausgeführt wird, verwenden Sie stattdessen die IP-Adresse 10.0.2.2. Sie können mehr von here lesen.

+0

Die Info in dieser Antwort hat nichts mit dem Problem zu tun. Ich frage mich, wer es aufgewertet hat. – greenapps

+0

ja, es testet nicht auf einem Simulator, sein Testen auf einem Android-Gerät im selben Netzwerk wie der PC, der den Server hostet. –

Verwandte Themen