![]() |
Namen erscheinen gehen aber nicht weg
Hey,
Zu meinem Problem, von meiner Nickliste in meinem Chat. Durch folgenden Code werden die Clients aufgelistet
Delphi-Quellcode:
Und beim Client so
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket); var voice: OLEVariant; begin label1.Caption := ServerSocket1.Socket.Connections[Listbox1.Items.Count].RemoteAddress; Listbox1.Items.Add(label1.caption); memo1.Lines.Add('Neuer Client hat sich verbunden : '+label1.caption+' .'); mediaplayer1.FileName := 'Sounds/connect.wav'; mediaplayer1.Open; mediaplayer1.Play; end;
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin if (ClientSocket1.Socket.Connected = false) then begin ClientSocket1.Active := true; end else begin timer1.Enabled := false; end; end; OnClientdisconnect :
Delphi-Quellcode:
Nur wenn der Client das Programm offen lässt und z.B einfach den Computer herunterfährt, bleibt der Client in der Liste obwohl er garnichtmehr verbunden ist.
procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket); begin bitbtn2.Click; listbox1.Items.Clear; bitbtn2.Click; ServerSocket1.Active := false; bitbtn2.Click; ServerSocket1.Active := true; bitbtn2.Click; bitbtn2.Enabled := false; end; procedure TForm1.BitBtn2Click(Sender: TObject); begin SelectedVictim := -1; Memo1.Lines.Add('Verbindung getrennt mit : '+label1.Caption+' .'); end; Gibt es da noch eine Funktion ala Timeout , oder wie kann mann sich da behelfen? Mit freundlichen Grüßen, luckys41 |
Re: Namen erscheinen gehen aber nicht weg
Clients anpingen.
Und gewöhn dir bitte 'ne ordentliche Code-Formatierung an! *schauder* :pale: |
Re: Namen erscheinen gehen aber nicht weg
Soweit so gut.
Server : :cheers:
Delphi-Quellcode:
Client :
procedure TForm1.Timer1Timer(Sender: TObject);
var i:Integer; begin with ServerSocket1 Do begin for i:=0 to Socket.ActiveConnections Do begin Socket.SendText('PING'); end; end; end;
Delphi-Quellcode:
Und wie kann ich jetzt die Nachricht Off verarbeiten beim Server?
if str = 'Ping' then
begin Socket.SendText('PONG'); end else begin Socket.SendText('Off'); end; |
Re: Namen erscheinen gehen aber nicht weg
Server pingt - Client antwortet : alles OK
Server pingt - Client antwortet nicht : Ups, da ist wohl wer offline, den nehm ich mal aus der Liste raus. |
Re: Namen erscheinen gehen aber nicht weg
Dankeschön für die Antworten.
Aber könnt ihr mir vielleicht einen Code Schnipsel zeigen wie sowas beim Server geht? |
Re: Namen erscheinen gehen aber nicht weg
Mit Code-Schnipsel ist das schwer abzuhandeln.
Du brauchst ein Zeitfenster, in der der Klient antworten muss. Wird es überschritten, kann man davon ausgehen, dass der Klient off ist. |
Re: Namen erscheinen gehen aber nicht weg
Hab es jetzt so
Delphi-Quellcode:
Client :
procedure TForm1.Timer1Timer(Sender: TObject);
var i:Integer; begin with ServerSocket1 Do begin for i:=0 to Socket.ActiveConnections Do begin Socket.SendText('PING'); end; end; end; procedure TForm1.Timer2Timer(Sender: TObject); begin IF Serversocket1.Socket.Connections[SelectedVictim].ReceiveText = 'On' then begin end else begin listbox1.items.delete(selectedvictim); end; end;
Delphi-Quellcode:
Aber es kommt immer die Fehlermeldung
if str = 'Ping' then
begin Socket.SendText('On'); end; Windows socket error: Eine Anforderung zum Senden oder Empfangen von Daten wurde verhindert, da der Socket nicht verbunden ist und (beim Senden über einen Datagrammsocket mit einem sendto-Aufruf) keine Adresse angegeben wurde (10057) |
Re: Namen erscheinen gehen aber nicht weg
es muss heißen
Delphi-Quellcode:
/edit1: im übrigen würde ich dir ans herz legen,
for i:=0 to Socket.ActiveConnections[b]-1[/b] Do
![]() /edit2: wieso stellst du eigentlich nicht einfach in das disconnect-event des serversockets, dass der client aus der listbox genommen wird? :gruebel: |
Re: Namen erscheinen gehen aber nicht weg
Funktioniert leider auch nicht :/
|
Re: Namen erscheinen gehen aber nicht weg
eine zeilenangabe wo der fehler auftritt wäre sinnvoll
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz