Socket Java Programm hängt sich auf bei dem versuch von einem Socket scanner Daten zu erhalten.

Tha_Coralis

Mitglied
Hallo Java-forum,

Ich habe ein Problem mit einem von mir entwickelten Javafx Programm. Das Programm soll einen Socket zu einem Server aufbauen und laufend aktualisieren ob Daten vom Server empfangen werden. (Eine Art Chatclient). Nun habe ich allerdings das Problem das ich nicht weiß wie ich den Scanner auslesen kann, wenn ich nicht weiß ob etwas empfangen wurde.

Wenn ich (um zu aktualisieren ob Daten empfangen wurden),

Java:
while(in.hasNextLine())
    {
    scroll("Server: " + in.nextLine());
    }

einfüge, hängt sich das Programm einfach auf wenn ich das Javafx Event auslöse das diesen Code enthält. Oder überhaupt

Java:
in.nextLine());
drin vorkommt.

Anmerkung:

in, ist der Scanner
Java:
Scanner in;
in  = new Scanner( socket.getInputStream() );

scroll() ist eine Funktion von mir, die den Text lediglich in einem Textfeld ausgibt. Übergabewert ist ein String.

Währe wirklich sehr nett von euch wenn ihr mir helfen könntet. Wenn ihr den ganzen Code haben wollt dann stell ich ihn rein. Ich wollte nur nicht das ihr euch das alles dann durchlesen müsst.

Gruß Tim
 
Also das ist ein Blocking Call, der so lange blockiert, bis eben eine Zeile eingelesen wurde. Du kannst so vorgehen, wenn Du es in einen eigenständigen Thread packst. Oder zu nutzt keinen Scanner sondern nutzt statt dessen Streams mit nicht blockierenden Aufrufen (z.B. inputStream.available() nutzen).
 

Zurück
Oben