Socket Client sendet nur einmal

  • Antworten:16
Gelöschter Account
  • Forum-Beiträge: 86

01.03.2014, 18:09:20 via Website

Hey,

ich habe in meiner App einen Socket Client, der Strings an den Server senden soll. Das klappt beim ersten mal wunderbar, aber wenn er noch was senden soll, dann macht er es einfach nicht.

Hier mal mein Code:

Client starten:
1new Thread(new ClientThread()).start();

ClientThread:
1class ClientThread implements Runnable {
2
3 @Override
4 public void run() {
5
6 try {
7 InetAddress serverAddr = InetAddress.getByName(SERVER_IP);
8
9 socket = new Socket(serverAddr, SERVERPORT);
10 updateUiHandler.post(canConnectRunnable);
11
12 } catch (UnknownHostException e1) {
13 updateUiHandler.post(cantConnectRunnable);
14 //e1.printStackTrace();
15 } catch (IOException e1) {
16 updateUiHandler.post(cantConnectRunnable);
17 //e1.printStackTrace();
18 }
19
20 }
21
22 }


Meine senden Methode:
1public void sendToHost(String command){
2 Log.d("sendToHost", "bevore try");
3 try {
4
5 PrintWriter out = new PrintWriter(new BufferedWriter(
6 new OutputStreamWriter(socket.getOutputStream())),
7 true);
8 out.println(command);
9 Log.d("sendToHost", command);
10 Log.d("sendToHost", "in try");
11 } catch (UnknownHostException e) {
12 Log.d("sendToHost", "unknownhost");
13 e.printStackTrace();
14 } catch (IOException e) {
15 Log.d("sendToHost", "ieexception");
16 e.printStackTrace();
17 } catch (Exception e) {
18 Log.d("sendToHost", "exception");
19 e.printStackTrace();
20 }
21
22 }

Wenn ich das erste mal etwas zum Server sende, kommt es auch an. Wenn ich nun die sendToHost() Methode noch einmal aufrufe, dann durchläuft er das try, was ich im LogCat ja sehe und auch die variable command ist befüllt, aber es kommt nichts am Server an.

Am Server liegt es nicht, der nimmt von anderen Clients auch Daten an.


Hoffe hier kann mir jemand helfen.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

01.03.2014, 18:18:09 via App

Internet Permission gesetzt?
Muss du für das Senden oder empfangen keine Schleife machen?
Tritt irgend ein Fehler auf? LogCat?

— geändert am 01.03.2014, 18:18:49

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Gelöschter Account
  • Forum-Beiträge: 86

01.03.2014, 18:23:32 via Website

Permissions sind gesetzt, sonst könnte er das erste mal gar net senden. Wenn ich ne Schleife um das try mache, dann sendet er das erste Kommando die ganze Zeit an den Server.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

01.03.2014, 18:27:46 via App

Kommen am Server denn übehaupt keine Bytes an?
Was sind client und Server? Android oder Java auf dem Pc?

Wie ist dein Handy ans internet gebunden?
Wlan oder utms?

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Gelöschter Account
  • Forum-Beiträge: 86

01.03.2014, 18:28:41 via Website

Beim ersten Mal kommt was am Server an, danach nichts mehr.
Der Server ist auch ein Android Handy, alles im Wlan.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

01.03.2014, 18:31:30 via App

Wenn du von anderen Clients sprichst, welche sind das dann?
Am besten du benutzt den debugger und schaust was beim zweiten mal anders ist als vorher.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Gelöschter Account
  • Forum-Beiträge: 86

01.03.2014, 18:33:18 via Website

Als anderen Client habe ich einfach einen PHP Client genommen, der immer eine Nachricht schickt, wenn ich die Datei aufrufe. Es liegt also nicht daran, dass der Server keine Nachrichten annimmt.

Was soll ich denn noch debuggen? Das try in der sendToHost Methode durchläuft er genau wie beim ersten mal.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

01.03.2014, 18:34:22 via App

Normalerweise geht manZeile für zeile durch und überprüft die Variablen.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

01.03.2014, 18:35:53 via App

Wie lautet dein eigentlicher sendbefehl.
Fehlt da nicht ein out.flush oder so?

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

01.03.2014, 19:10:28 via App

Was steht denn beim 2. mal in command drinne?
Ist dieser leer oder steht da dein zu sendernder text .

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Gelöschter Account
  • Forum-Beiträge: 86

01.03.2014, 19:11:22 via Website

Da steht mein zu sendener Text drin.

Antworten
Gelöschter Account
  • Forum-Beiträge: 86

01.03.2014, 20:14:23 via Website

Gibt es denn irgendwo ein funktionierendes Example? Hab auch schon nach fertigen Libraries geguckt, aber so wirklich findet man da nichts.

Antworten
Gelöschter Account
  • Forum-Beiträge: 86

01.03.2014, 22:11:25 via Website

Hab ich mir vorhin schon angeguckt, bringt mich auch nicht weiter. Gibt es andere Möglichkeiten einfach nen String von Device A zu Device B zu schicken und umgekehrt?

Antworten
impjor
  • Forum-Beiträge: 1.793

01.03.2014, 23:16:45 via App

Du öffnest für jeden Command den du sendest erneut einen PrintWriter/BufferedWriter? Erstell nur einmal den PrintWriter außerhalb der Methode.

LG

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Gelöschter Account
  • Forum-Beiträge: 86

01.03.2014, 23:17:53 via Website

Soweit war ich auch schon. Ich hab grad was gefunden, was mir helfen könnte. Wenn es klappt poste ich es euch.

Antworten