Oh, hab gerade in die Socket-Sourcen geschaut... erstens ist es anders und zweitens als man denkt
.
TServerSocket bezieht seine gesamten Client-Events von FServerSocket(TServerWinSocket). Du musst also von TServerWinSocket ableiten und dort ClientDisconnect überschreiben. Damit die neue Klasse auch verwendet wird, muss nun FServerSocket auch als diese instanziiert werden. Dazu fallen mir zwei Möglichkeiten ein:
1. Du leitest von TServerSocket ab und überschreibst den Constructor:
Delphi-Quellcode:
begin
inherited;
FServerSocket.Free;
FServerSocket := TMyNewServerWinSocket.Create(INVALID_SOCKET);
end;
Finde ich allerdings nicht ganz so schön, besser ist IMO:
2. Leite von T
CustomServerSocket ab, mit folgendem Constructor (Original: TServerSocket.Create):
Delphi-Quellcode:
begin
inherited Create(AOwner);
FServerSocket := TMyNewServerWinSocket.Create(INVALID_SOCKET); //<- Veränderung
InitSocket(FServerSocket);
FServerSocket.ThreadCacheSize := 10;
end;
Außerdem kopierst du den Interface-Teil von TServerSocket, was aber nicht viel ist (neue Implementierungen gibts auch nicht).
Das Ganze ist also doch nicht so trivial
.