Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Speziellen Client vom Server trennen? (https://www.delphipraxis.net/121500-speziellen-client-vom-server-trennen.html)

ziwu-zubi 29. Sep 2008 09:30


Speziellen Client vom Server trennen?
 
Hi,

habe nach dem Chat-Tutorial einen kleinen Chat nachgebaut und es klappt auch echt gut. Hab noch n paar Features hinzugefügt, aber beim "kick" von einem speziellen Client scheitere ich kläglich...

Könnt' ihr mir vielleicht helfen? Wie kann ich vom Server aus einen speziellen Client kicken?

MfG ziwu-zubi

jokerfacehro 29. Sep 2008 10:27

Re: Speziellen Client vom Server trennen?
 
speichere zu jedem client den socket.
willste den client kicken einfach seinen socket schließen.

besser is aber wenn du dem client vorher nen kick sendest, dann weiß der client bescheid, warum die verbindung weg is

ziwu-zubi 29. Sep 2008 10:51

Re: Speziellen Client vom Server trennen?
 
Danke für die schnelle Antwort! Werd' gleich mal probieren ;)


...Hier das konkrete Bsp:

Delphi-Quellcode:
procedure TForm1.btn_kickClick(Sender: TObject);
var
  Selected_Client, i, x : Integer;
  Selected_Text : string;
begin
  Selected_Text := lb_clients.Items.Strings[lb_clients.ItemIndex];
  for x := 0 to ServerSocket1.Socket.ActiveConnections-1 do
  begin
    if ServerSocket1.Socket.Connections[x].RemoteAddress = Selected_Text then
    begin Selected_Client := x;
  end;
end;

jokerfacehro 29. Sep 2008 20:47

Re: Speziellen Client vom Server trennen?
 
das kann funktionieren, muss aber nicht. versuch mal mehrere clients hintereinander zu kicken unzwar nicht in der reihenfolge wie sie connected haben. der index deines clients ist nicht gleich dem index des zugeordneten sockets des servers

besser ist es nen record auf zu machen

Delphi-Quellcode:
type TUser = record
             name:string[30];
             socket:T...Socket;
end;

beim anmelden des clients einfach den socket mit reinwerfen fertig ^^
denn brauchste auch nich die for schleife durchlaufen, sondern kannst direkt über den index drauf zugreifen

SirThornberry 30. Sep 2008 06:14

Re: Speziellen Client vom Server trennen?
 
und konfortabler als ein Record ist ein Object welches man mit entsprechenden Methoden versieht zumal ja schon die hälte objectorientiert ist - warum also jetzt records hinzufügen und somit von der objectorientierung weg gehen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:21 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