Disconnect des Clients feststellen

Status
Nicht offen für weitere Antworten.
B

BuggyMonkey

Gast
Hallo zusammen,
nach dem ich jez auch in die welt der OOP eingestiegen bin... versuce ich meinen ersten Chat zu realisieren, klappt auch wunderbar, habe einen code dazu aus dem Internet Funktioniert so weit ganz gut..

.. es gibt nur das Problem, das wenn der Client disconnectet, der Server in einer endlos schleife verfängt...
laso muss ich über prüfen ob der client noch connected ist...
gibt es da einen Befehl / Methode für??

Danke, hier noch mal der Code:
Code:
import java.net.*;
import java.io.*;
import java.util.*;

public class Chatserver implements Runnable{

	public static final int PORT = 8765;
	protected ServerSocket listen;
	protected Vector connections;
	Thread connect;
	
	public Chatserver()
	{
		try
		{
			listen = new ServerSocket(PORT);
		} catch (IOException e)
		{
			System.err.println("Fehler beim Erzeugen der Sockets:"+e);
			System.exit(1);
		}

		connections = new Vector();

		connect = new Thread(this);
		connect.start();
	}
	
	public static void main(String[] args)
	{
		new Chatserver();
	}
	
	public void broadcast(String msg)
	{
		int i;
		connection you;
		for (i=0; i<connections.size(); i++)
		{
			you = (connection) connections.elementAt(i);
			you.out.println(msg);
			
		}
	}
	
	public void run()
	{
		try
		{
			while(true)
			{
				Socket client=listen.accept();

				connection c = new connection(this, client);
				connections.addElement(c);
			}
		} catch (IOException e)
		{
			System.err.println("Fehler beim Warten auf Verbindungen:"+e);
			System.exit(1);
		}	
	}

}

class connection extends Thread
{
	protected Socket client;
	protected DataInputStream in;
	protected PrintStream out;
	protected Chatserver server;

	public connection(Chatserver server, Socket client)
	{
		this.server=server;
		this.client=client;

		try
		{
			in = new DataInputStream(client.getInputStream());
			System.out.println("Client:" + in);
			out = new PrintStream(client.getOutputStream());
		} catch (IOException e)
		{
			try { client.close(); } catch (IOException e2) {} ;
			System.err.println("Fehler beim Erzeugen der Streams: " + e);
			return;
		}

		this.start();
	}


	public void run()
	{
		String line;

		try
		{
			while(true)
			{
				line=in.readLine();
				Socket client=listen.accept();
				System.out.println(client);
				if(line!=null)
					server.broadcast(line);
			}
		} catch (IOException e)
		{
			System.out.println("Fehler:" + e);
		}
	}
}
der Server hängt sich in der while Klasse in der run Methode auf...


Danke für eure Hilfe ! :D
 

sparrow

Top Contributor
Naja... er hängt sich nicht auf.
Eine while (true) Methode läuft halt ewig. Sprich: solange wie die Bedingung erfüllt ist.
Da sie bei dir ewig erfüllt ist bricht die Schlefie nur ab wenn in ihrem Inneren ein break steht.
Ich bin mir nicht sicher, aber ich glaube von InputStream.readLine() wird null geliefert wenn die Verbindung nicht mehr besteht. Du musstest also darauf prüfen und dann, sollte dem so sein, break aufrufen.
Du prüfst zwar ob line null ist, reagierst aber nicht darauf.
 
B

BuggyMonkey

Gast
Hi nochmal,
das ging ja echt schnell..
und funktioniert supa.. :)

wie gesagt, ich bin neu in Java und kenne die klassen methoden etv. noch nicht da ich neu in der OOP bin!

GANZ GROßES DANKESCHÖN!!!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Error, wenn mehrere Clients gleichzeitig die Verbindung beenden Java Basics - Anfänger-Themen 16
R Antwort vom Server an mehreren Clients senden Java Basics - Anfänger-Themen 3
G Multiple Clients and one Server Java Basics - Anfänger-Themen 2
G Verfügbare Clients prüfen ohne ping Java Basics - Anfänger-Themen 12
D Erste Schritte Quit in IRC Clients Java Basics - Anfänger-Themen 7
L Server mit mehreren Clients Java Basics - Anfänger-Themen 25
W mehrere clients auf einem server Java Basics - Anfänger-Themen 2
B Clients aufsammeln und in JTable packen Java Basics - Anfänger-Themen 8
A ServerSocket accept bei mehreren Clients? Java Basics - Anfänger-Themen 2
P flash-based java clients Java Basics - Anfänger-Themen 3
wolei JAVA Zeitdifferenz feststellen. Java Basics - Anfänger-Themen 4
Jose05 Fehler im Programm feststellen Java Basics - Anfänger-Themen 2
C Programm das feststellen kann, ob eine eingegebene Zahl einem Schaltjahr entspricht, richtig geschrieben? Java Basics - Anfänger-Themen 11
T Feststellen, dass Wert zu groß; Caesar Chiffre Java Basics - Anfänger-Themen 3
M Aufrufendes Objekt feststellen Java Basics - Anfänger-Themen 9
T Erste Schritte Ende von Wörtern in einer Zeile feststellen? Java Basics - Anfänger-Themen 5
Y Feststellen ob ein Jahr vergangen ist Java Basics - Anfänger-Themen 6
A Feststellen ob Desktop.print("*.pdf") fertig ist Java Basics - Anfänger-Themen 6
P Datentypen Hauefigkeit feststellen Java Basics - Anfänger-Themen 19
E Position erkennen und überlappungen feststellen Java Basics - Anfänger-Themen 4
C Monotonie feststellen Java Basics - Anfänger-Themen 12
N OOP gewinner in einem Spiel feststellen Java Basics - Anfänger-Themen 4
H Eclipse: Programm startet nicht, wie Fehler feststellen? Java Basics - Anfänger-Themen 5
M Obsolete Komponenten feststellen? Java Basics - Anfänger-Themen 3
G Feststellen, was ausgelöst wurde Java Basics - Anfänger-Themen 2
G Feststellen, ob erstes Zeichen eines Strings eine Ziffer ist Java Basics - Anfänger-Themen 11
R Verzeichnis feststellen Java Basics - Anfänger-Themen 14
W Zeilenposition in JTextArea feststellen(ohne Caret) Java Basics - Anfänger-Themen 7
G Länge einer Enumeration feststellen Java Basics - Anfänger-Themen 15
M Feststellen, das Textboxen leer sind! Java Basics - Anfänger-Themen 3
M Text in JInternalFrames - Source feststellen? Java Basics - Anfänger-Themen 6
reibi Feststellen ob Datei fertiggeschrieben ist. Java Basics - Anfänger-Themen 12
L feststellen ob args[2] gesetzt ist? Java Basics - Anfänger-Themen 2
G Änderungen in TextFelder feststellen Java Basics - Anfänger-Themen 4
R Integerwerte von enum-Elementen feststellen Java Basics - Anfänger-Themen 2
D zeilenumbruch feststellen Java Basics - Anfänger-Themen 8
T Feststellen wie viel Arbeitsspeicher belegt ist Java Basics - Anfänger-Themen 2
G Vergleichen von Objekten, selektiertes Objekt feststellen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben