AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Client online bestätigung
Thema durchsuchen
Ansicht
Themen-Optionen

Client online bestätigung

Ein Thema von Jackthecoder · begonnen am 18. Jul 2007 · letzter Beitrag vom 27. Jul 2007
Antwort Antwort
Jackthecoder

Registriert seit: 18. Jul 2007
9 Beiträge
 
#1

Client online bestätigung

  Alt 18. Jul 2007, 02:23
Also ich habe in der schule ca 5 Rechner am laufen, auf diesen Rechnern befindet sich ein client (ClientSocket) der sich zu einem Server(ServerSocket) verbindet. Der Server ist in diesem fall mein Rechner.

ich sehe vor mir eine form mit einer listview komponente, in der listview sollen alle clients stehen die sich mit mir verbunden haben.

nun habe ich einige probleme undzwar folgende.

1. wenn ein client die verbindung mit mir beendet dann soll auch sein eintrag in meiner listview gelöscht werden, doch wie stell ich das an?

2. wie bekomme ich es hin das es keine doppeleinträge in der listview gibt?

ich bin noch relativ neu auf diesem gebiet und danke für jede hilfe.
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#2

Re: Client online bestätigung

  Alt 18. Jul 2007, 05:35
Zu 1.

Du schickst dem Server, bevor der Client sich beended, eine definierte Nachricht (Abmeldenachricht). So weiß der Server, ClientXY ist nicht mehr da, und kann den Eintrag aus der Liste löschen


Zu 2.

Einfach beim Eintragen in den Listview, prüfen, ob der Client schon in der Liste ist. Ab einfachsten dürfte das mit Listbox.items.indexof(ClientKennung) >0 gehen.
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Jackthecoder

Registriert seit: 18. Jul 2007
9 Beiträge
 
#3

Re: Client online bestätigung

  Alt 18. Jul 2007, 11:04
danke für deine antwort aber der client weiß nicht wann der benutzer sich abmeldet und manchmal kommt es ja vor das der clientrechner absützt und dann wäre diese methode damit der client sich aus der liste entfernt ja nicht sicher.

ich hätte es gerne so, dass alles vom server aus gesteuert wird und der client höchstens nur auf anfragen vom server reagiert....also der server soll einfach die listview durchgehen und jedem client der verbunden ist eine nachricht schicken und wenn diese nicht beantwortet wird soll der entsprechende client aus der liste gelöscht werden.

und deine zweite antwort habe ich nicht so richtig verstanden wie mache ich das genau mit dem verhindern der doppeleinträge? kannst du mir da ein beispiel machen?
EDIT//
das zweite problem hab ich gelöst......

nochmals danke für deine antwort.
  Mit Zitat antworten Zitat
Benutzerbild von SnuffMaster23
SnuffMaster23

Registriert seit: 13. Feb 2006
Ort: Kempten
253 Beiträge
 
#4

Re: Client online bestätigung

  Alt 26. Jul 2007, 23:49
Das erste Problem kannst du lösen indem du einfach sagst, die Clients müssen sich immer nach einem bestimmten Intervall beim Server melden sonst wird die Verbindung getrennt/als getrennt angenommen und der Client aus der Liste gelöscht.
Du kannst auch den Server alle ab und zu seine Clients "fragen" lassen ob sie noch da sind, wenn nicht innerhalb von z.B. drei Sekunden eine Antwort kommt => Client weg.
Oder der Client updatet die Liste ab und zu mit der Liste der aktiven Verbindungen die der Socket ja führt. Da haste auch schon alles drin von wegen Timeout und so.

//Edit: Lesen bildet bist ja schon selbst draufgekommen.
"Conspiracy is the poor man's mapping of the world" - Fredric Jameson
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Client online bestätigung

  Alt 27. Jul 2007, 08:12
Gab es beim Server nicht auch ein Event OnClientDisconnect? Das könntest du auch verwenden.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: Client online bestätigung

  Alt 27. Jul 2007, 08:27
1. Im OnError ein Socket.Close einbinden.
2. OnClientDisconnect nutzen um den übergebenen Socket in der ListView zu finden
3. OnClientConnect den übergebenen Socket in die Listview eintragen, wobei du den übergebenen Socket an die Data Eigenschaft des ListViews weitergibst. Dadurch kannst du die Einträge beim Disconnect eindeutig identifizieren und bei einer Auswahl in der ListView kommst du damit auch problemlos auf den jeweiligen Socket...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz