Verbindung zum Server prüfen mit einem vorhandenem Socket

Status
Nicht offen für weitere Antworten.

coolex

Mitglied
Hallo!

ich habe einen Client geschrieben, der eine Verbindung zu einem auch selbstgeschriebenem Server aufbaut.
Nun habe ich beim Client einen thread eingebaut, der städndig prüfen soll, ob der Server noch da ist. Allerdings funktioniert das nicht so wie ich es mir vorgestellt habe.

So sieht mein thread aus:
Code:
...
public void run(){
		while(!stop){
			// if there is still a connection
			if(server.isConnected()){
				//macht was
			// if there is no connection anymore
			}else if(!server.isConnected()){
				stop = true;
				System.out.println("Server closed the connection!");
			}
		}
	}...

Auf der Serverseite habe ich folgendes:
Code:
public boolean isConnected(){
		return socket.isConnected();
	}

Doch wenn ich meinen Server ausschalte seigt mir der Rückgabewert von isConnected() immer noch true an.
Wie kann ich also mit einem vorhandenem Socket, das schon eine erfolgreiche Verbindung zum Server aufgebaut hat, prüfen, ob der Server noch da ist?

Hoffe, ihr könnt mir helfen.
Danke

Alex
 
Ich versuche mal die Frage einfacher zu stellen.

Wie kann ich einfach bei einer vorhandenen Socket-Verbindung clientseitig prüfen, ob der Server noch da ist?
Ich möchte nicht nochmal einen neuen Socket erstellen nur um zu prüfen, ob der Server noch da ist.

Ich bitte euch um Rat. BITTE

Danke!
Alex
 
Danke für die schnelle Antwort.

Jetzt fällt mir ein, dass ich sowas ähnliches schonmal mit Datagrams gemacht habe.
In meinem Fall handelt es sich aber um eine verbindungsorientierte Verbindung, daher ist es mir in diesem nicht ganz bekannt, wie ich das Problem trotzdem lösen soll, weil ich noch nie einzelne Packete mit sockets verschickt habe.

Wie kann ich nun ein Packet an den Server schicken und testen, ob es angekommen ist? Das habe ich mit Sockets noch nie gemacht.

Hoffe um Weiterhilfe! 🙂

Danke.
 
sende einfach beliebige daten. wenn die verbindung zusammengebrochen ist fliegt ne exception. wenn du deinen server "richtig" beendest, sprich beim beenden der anwendung auch den socket schließt, dann weiß auch der client bescheid. ansonsten dauert es eben bis die verbindung einen timeout hat.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben