Einzelnen Beitrag anzeigen

Dragon27

Registriert seit: 20. Nov 2003
Ort: Aßling
543 Beiträge
 
Delphi XE6 Enterprise
 
#1

Den Clients ID´s übergeben

  Alt 16. Feb 2005, 11:24
Hallo zusammen!

Ich arbeite momentan mit den Socket Komponenten von Delphi (Ich weiß veraltet). Meine Frage nun an Euch:

Mein Server soll die ID´s der Clients verwalten denn wenn der Server was senden soll muss ich ihm ja immer einen Integer für den Client angeben.

Meine Lösung momentan:

Delphi-Quellcode:
var
  UsersName: array [0..100] of String;

implementation

{$R *.dfm}

function GetFreeSID():Integer;
var Zahl:Integer;
begin
Zahl:=-1;
 while Zahl<99 do begin
  inc(zahl);
  if UsersName[Zahl]=''
  then break;
 end;
 Result:=Zahl;
end;

Procedure GetNewSID(Name:String);
begin
 UsersName[GetFreeSID]:=Name;
end;
Mein Problem daran ist nun, in welches Ereignis im Server ich die Procedure GetNewSID aufrufe???

Das steht in der Delphi-Hilfe, aber ich konnte nichts finden wo denn dem Client der Integer zugewiesen wird.

Zitat:
Tritt ein, wenn ein Client-Socket eine vom Server-Socket akzeptierte Verbindung einrichtet.

Delphi-Syntax:

property OnClientConnect: TSocketNotifyEvent;

C++ Syntax:

__property TSocketNotifyEvent OnClientConnect = {read=FOnClientConnect, write=FOnClientConnect};

Beschreibung

In einer Ereignisbehandlungsroutine für OnClientConnect können Sie Aktionen festlegen, die ausgeführt werden, sobald ein Client-Socket die Verbindung zum Server-Socket eingerichtet hat. Beispielsweise kann der Socket in einer OnClientConnect-Ereignisbehandlungsroutine über die Verbindung lesen oder schreiben.

Die Reihenfolge der Server-Socket-Ereignisse bis hin zu OnClientConnect ist folgende:

1 Bevor der Server-Socket für den Empfang geöffnet wird, tritt das Ereignis OnListen ein.
2 Der Server-Socket empfängt Client-Anforderungen in einer Warteschlange. Er akzeptiert eine dieser Anforderungen und empfängt ein Windows-Socket-Handle für die neue Socket-Verbindung.
3 Der Server-Socket erzeugt das Ereignis OnGetSocket und übergibt das Windows-Socket-Handle. Wenn das TServerClientWinSocket-Objekt für den Server-Endpunkt der neuen Verbindung nicht in der Behandlungsroutine für das Ereignis OnGetSocket generiert wird, erzeugt der Server-Socket dieses Objekt. Das TServerWinSocket-Objekt empfängt weiterhin Anforderungen anderer Clients.

4 Es tritt das Ereignis OnAccept ein, in dem das neue TServerClientWinSocket-Objekt verwendet wird.
5 Wenn ServerType den Wert stThreadBlocking hat und im Zwischenspeicher kein Thread zur Verfügung steht, tritt das Ereignis OnGetThread ein. Generiert die Behandlungsroutine für das Ereignis OnGetThread keinen Thread, erzeugt der Server-Socket ein TServerClientThread-Objekt.
6 Wenn ServerType den Wert stThreadBlocking hat, tritt das Ereignis OnThreadStart ein, wenn der Thread mit der Ausführung beginnt.

7 Der Client vervollständigt die Verbindung zum TServerClientWinSocket-Objekt. Danach tritt das Ereignis OnClientConnect ein.

Hinweis: Hat ServerType den Wert stThreadBlocking, müssen Sie sicherstellen, daß der gesamte Code in der Ereignisbehandlungsroutine für OnClientConnect Thread-sicher ist. Mit Hilfe der Methode GetClientThread des im Parameter Sender angegebenen Objekts können Sie auf die speziellen Thread-Informationen zugreifen.
Hinweis: Die Behandlungsroutine für das Ereignis OnClientConnect des TServerSocket-Objekts wird zusammen mit der Ereignisbehandlungsroutine OnClientConnect für das zugehörige TServerWinSocket-Objekt eingerichtet.
Ich hoffe Ihr könnt mir helfen!

Danke

Andy
Delphi is ......... DELPHI!!
  Mit Zitat antworten Zitat