AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Namen erscheinen gehen aber nicht weg
Thema durchsuchen
Ansicht
Themen-Optionen

Namen erscheinen gehen aber nicht weg

Ein Thema von luckys41 · begonnen am 12. Mär 2009 · letzter Beitrag vom 13. Mär 2009
Antwort Antwort
Seite 1 von 2  1 2      
luckys41

Registriert seit: 9. Feb 2009
20 Beiträge
 
#1

Namen erscheinen gehen aber nicht weg

  Alt 12. Mär 2009, 18:34
Hey,

Zu meinem Problem, von meiner Nickliste in meinem Chat.

Durch folgenden Code werden die Clients aufgelistet

Delphi-Quellcode:
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;
Und beim Client so

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:
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;
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.

Gibt es da noch eine Funktion ala Timeout , oder wie kann mann sich da behelfen?

Mit freundlichen Grüßen,
luckys41
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: Namen erscheinen gehen aber nicht weg

  Alt 12. Mär 2009, 18:41
Clients anpingen.

Und gewöhn dir bitte 'ne ordentliche Code-Formatierung an! *schauder*
  Mit Zitat antworten Zitat
luckys41

Registriert seit: 9. Feb 2009
20 Beiträge
 
#3

Re: Namen erscheinen gehen aber nicht weg

  Alt 12. Mär 2009, 19:21
Soweit so gut.

Server :

Delphi-Quellcode:
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;
Client :

Delphi-Quellcode:
  if str = 'Pingthen
   begin Socket.SendText('PONG');
   end else
   begin
   Socket.SendText('Off');
   end;
Und wie kann ich jetzt die Nachricht Off verarbeiten beim Server?
  Mit Zitat antworten Zitat
Benutzerbild von Dunkel
Dunkel

Registriert seit: 26. Mär 2007
Ort: Klingenstadt
541 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Namen erscheinen gehen aber nicht weg

  Alt 12. Mär 2009, 19:23
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.
Es ist zu wahr um schön zu sein...
  Mit Zitat antworten Zitat
luckys41

Registriert seit: 9. Feb 2009
20 Beiträge
 
#5

Re: Namen erscheinen gehen aber nicht weg

  Alt 12. Mär 2009, 19:25
Dankeschön für die Antworten.

Aber könnt ihr mir vielleicht einen Code Schnipsel zeigen wie sowas beim Server geht?
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: Namen erscheinen gehen aber nicht weg

  Alt 12. Mär 2009, 19:36
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.
  Mit Zitat antworten Zitat
luckys41

Registriert seit: 9. Feb 2009
20 Beiträge
 
#7

Re: Namen erscheinen gehen aber nicht weg

  Alt 12. Mär 2009, 19:56
Hab es jetzt so

Delphi-Quellcode:
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 = 'Onthen
      begin end else begin
listbox1.items.delete(selectedvictim);
end;
end;
Client :

Delphi-Quellcode:
   if str = 'Pingthen
   begin
    Socket.SendText('On');
   end;
Aber es kommt immer die Fehlermeldung

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)
  Mit Zitat antworten Zitat
craash

Registriert seit: 23. Nov 2008
Ort: Mühlacker
79 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Namen erscheinen gehen aber nicht weg

  Alt 12. Mär 2009, 21:30
es muss heißen for i:=0 to Socket.ActiveConnections[b]-1[/b] Do /edit1: im übrigen würde ich dir ans herz legen, das hier mal zu überfliegen

/edit2: wieso stellst du eigentlich nicht einfach in das disconnect-event des serversockets, dass der client aus der listbox genommen wird?
uses Delphi 5 Std. / TurboDelphi 2006
  Mit Zitat antworten Zitat
luckys41

Registriert seit: 9. Feb 2009
20 Beiträge
 
#9

Re: Namen erscheinen gehen aber nicht weg

  Alt 13. Mär 2009, 12:03
Funktioniert leider auch nicht :/
  Mit Zitat antworten Zitat
craash

Registriert seit: 23. Nov 2008
Ort: Mühlacker
79 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Namen erscheinen gehen aber nicht weg

  Alt 13. Mär 2009, 19:00
eine zeilenangabe wo der fehler auftritt wäre sinnvoll
uses Delphi 5 Std. / TurboDelphi 2006
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 23:34 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