Problem Client - Server Sockets: .ready() wird nie true!

majestic

Mitglied
Hallo,

Ich versuche schon seit Stunden eine Client - Server kommunikation zum laufen zu bringen, habe aber das Problem das beim Client BufferedReader.ready() nie true wird!

Hier der Client:

Java:
conn = new Socket(SERVER_IP, SERVER_PORT);
PrintWriter writer = new PrintWriter(new OutputStreamWriter(conn.getOutputStream()));
writer.print("sid/"+data+"\n");
writer.flush();

BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
while(!reader.ready()) Thread.sleep(2); <----- reader.ready() wird nie true!
String retvalue = reader.readLine();
System.out.println("Daten erhalten: "+retvalue);
writer.close();
reader.close();
conn.close();
return retvalue;

und hier der Server:

Java:
ServerSocket serverS = new ServerSocket(1080);
while (true) {
reqSocket = serverS.accept();
this.start();
}
[...]
In der run Methode der gleichen Klasse:
bReader = new BufferedReader(new InputStreamReader(reqSocket.getInputStream()));
while (!bReader.ready()) {
System.out.println("Reader ready:"+bReader.ready());
try {
      Thread.sleep(2);
 }
 catch (InterruptedException ex) {
       System.out.println("interrup exception in ReqServer!");
  }
 }
clientData = bReader.readLine();
OutputStream os = reqSocket.getOutputStream();
BufferedWriter bWriter = new BufferedWriter(new OutputStreamWriter(reqSocket.getOutputStream()));
bWriter.write(data);
bWriter.flush();
bWriter.close();
bWriter = null;
reqSocket.close();
 
Zuletzt bearbeitet:
darf man mal fragen was du da überhaupt vor hast und was nun des rätzels lösung war ?

auch ist deine mischung gut ... auf der einen seiten PrintWriter ... und auf der anderen BufferedWriter ...
wird zwar beides über einen OutputStreamWriter gelegt ... aber entscheid dich mal ...

auch ist die verwendung von ready() fragwürdig ...

normalerweise liest man in nem endlos loop vom BufferedReader

Java:
String line="";
while((line=bufferedReader.readLine())!=null)
{
//verarbeitung
}

setzt natürlich a-sync threads vorraus ...
 
Ich dachte wenn ich mit den Readern und Writern etwas aufräume klappts und hab hier etwas voreilig gepostet. Es hat aber immer noch nicht funktioniert, dann habe ich deinen Post gelesen und nun funktioniert es. Dank dir!
 
sind eigentlich basics die man so auch in jedem besseren buch findet *tipp : java insel* ...

ready sollte man gerade übers netz nicht verwenden ... im lokalen file-system kann es aber bestimmt irgendeinen sinnvollen einsatz gaben *auch wenn mir grad nichts einfällt*
 

Zurück
Oben