Socket Problem mit InputStreamReader

Darky^

Aktives Mitglied
Hi!

Und zwar habe ich erstmal folgenden Code:

Java:
class LeseThread extends Thread {

    Socket sock;
    LinkedList<String> users = new LinkedList<String>();
    private BufferedWriter out;
    private BufferedReader in;
        LeseThread(Socket sock) { this.sock = sock; }

    @Override
        public void run() {
            String s;
            Boolean connected = false;
            int mid;
            
            try {
                InetAddress myAddr = sock.getInetAddress();

                in = new BufferedReader(new InputStreamReader(sock.getInputStream(), "UTF-8"));
                out = new BufferedWriter(new OutputStreamWriter(sock.getOutputStream(), "UTF-8"));
                s = in.readLine();
                System.out.print("HIER");
                sock.setSoTimeout(3000); // 3 Sekunden Timeout bei "read"
                
               
                
                
                out.write("chat new user");
                out.flush();
                s = in.readLine();
                String [] tmp = s.split(" ");
                
                if(s.startsWith("user") && !users.contains(tmp[1])){
                    users.add(tmp[1]);
                    out.write("ok");
                    out.flush();
                    out.write("logon "+tmp[1]);
                    mid = (int) Math.random()*100;
                    out.write("mid "+mid);
                    connected=true;
                    out.flush();
                    
                }
                else{
                    out.write("error");
                    out.flush();
                 }
                while (connected) {
                    
                    
                }
                sock.setSoTimeout(0);  // Timeout aufheben
                //.
            }
            catch(Exception ex){
                
            }
    }

}



läuft soweit ganz normal, bis zum ersten "in.readLine()", Zeile 20, ab dieser Stelle werden keine Testausgaben mehr angezeigt und er geht also einfach nicht mehr weiter. Exception bekomme ich keine, da das Programm ganz normal weiterläuft.

Jemand eine Idee woran es scheitern könnte?


Mfg
 
Zuletzt bearbeitet:
Ja 😀

dürft aber trotzdem nicht daran gescheidert sein, läuft noch immer normal weiter obwohl ich es jetzt in

Java:
 catch(Exception ex){
                System.out.print(ex.getMessage());
                System.exit( 1 );
            }

geändert habe, bekomme keine Ausgabe.
 
Besser ex.printStackTrace(); und ohne System.exit(...)

Zum Problem: readLine() hat die Eigenschaft solange zu blockieren, bis eine komplette Zeile eingelesen wurde.
 

Neue Themen


Zurück
Oben