C# TcpClient Connected Status

Zhen

Lt. Junior Grade
Registriert
Aug. 2009
Beiträge
299
Hallo Leute,
ich hätte da ne Frage bezüglich des TcpClients und TcpListeners.

Ich habe mir ein kleines Chat-Tool zusammenprogrammiert. Funktioniert auch alles einwandfrei, aber ein Problem hätte ich da.

Wenn das Chat-Programm beim Client ordnungsgemäß geschlossen wird (oder sich schließt, weil der PC heruntergefahren wird), dann meldet es sich ganz normal beim Server ab... aber... wenn jetzt z.B. (aus welch einem Grund auch immer), das Programm abstürzt oder das Netzwerkkabel gezogen wird (mit anderen Worten: das Programm NICHT ordnungsgemäß beendet wird), dann wird der Client am Server trotzdem als Online angezeigt.

Ich habe zwar nen Button mit einer Funktion eingebaut (beim Server), der dann prüfen soll, aber die entsprechenden Clients noch verbunden sind (falls nicht, dann aus der Liste austragen), aber das funktioniert nicht wie es soll.

Meine Idee war es einfach eine Nachricht an die Clients zu senden oder die "Connected"-Property abzufragen, aber beides sagt mir, dass noch eine Verbindung besteht. Das senden einer Nachricht spuckt keinen Fehler aus und die Property ist ständig auf true. Habt ihr vielleicht eine Idee wie man das lösen könnte?

Mir würde höchstens noch einfallen eine Ping-Klasse zu schreiben, aber soweit ich das mitbekommen habe ist das ewig viel Code für eine eigentlich doch eher nebensächliche Funktion :D

Deswegen meine Frage... gibt es nur den Weg über die Ping-Klasse oder gibts vielleicht noch ne andere Möglichkeit herauszufinden ob beim Client das Kabel gezogen wurde... ?

Danke schon mal im vorraus für eure Ratschläge und Hilfe.
 
Na super... und ich such schon den halben Vormittag u. Mittag nach ner Möglichkeit das über TcpClient zu erledigen xDDD

Ich hab bisher immer nur gelesen, dass es in .Net keine Ping-Klasse gibt und man sich diese selber schreiben müsste... -_-"

VIELEN VIELEN DANK für den Ratschlag :D

Hätte gleich hier posten sollen statt ewig durch google zu wüllen... ;-)
 
Hi,

kein Thema. Ob es die eleganteste Lösung ist weiß ich nicht, aber es ist auf jeden Fall sehr effektiv - wenn der Ping nicht mehr klappt wird der Rest auch nicht klappen :)

Viel Erfolg!

VG,
Mad
 
Habs jetzt ausprobiert. Hat super funktioniert :-)

Jetzt könnts höchstens sein, dass ich an einigen anderen Stellen im Programm noch was umschreiben muss (funzt zwar, aber nicht sehr elegant gelöst dort. Da ist die Ping-Klasse viel eleganter :D :D )

Danke nochmals :-)
 
Zurück
Oben