183 lines
4.9 KiB
ObjectPascal
183 lines
4.9 KiB
ObjectPascal
unit mckSocket;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Classes, Messages, Winsock, Forms, SysUtils,
|
|
KOLSocket, mirror;
|
|
|
|
type
|
|
|
|
TSocketMessageEvent = procedure (SocketMessage: TWMSocket) of object;
|
|
|
|
TKOLSocket = class(TKOLObj)
|
|
private
|
|
fIPAddress: string;
|
|
fPortNumber: word;
|
|
FOnError: TSocketMessageEvent;
|
|
FOnAccept: TSocketMessageEvent;
|
|
FOnClose: TSocketMessageEvent;
|
|
FOnConnect: TSocketMessageEvent;
|
|
FOnRead: TSocketMessageEvent;
|
|
FOnWrite: TSocketMessageEvent;
|
|
FOnListen: TSocketMessageEvent;
|
|
FOnOOB: TSocketMessageEvent;
|
|
protected
|
|
function AdditionalUnits: string; override;
|
|
procedure SetupFirst( SL: TStringList; const AName, AParent, Prefix: String ); override;
|
|
procedure SetupLast( SL: TStringList; const AName, AParent, Prefix: String ); override;
|
|
procedure AssignEvents( SL: TStringList; const AName: String ); override;
|
|
public
|
|
constructor Create(AOwner: TComponent); override;
|
|
destructor Destroy; override;
|
|
|
|
function GetPortNumber: LongInt;
|
|
function GetIPAddress: String;
|
|
|
|
procedure SetPortNumber(NewPortNumber: LongInt);
|
|
procedure SetIPAddress(NewIPAddress: String);
|
|
|
|
procedure SetOnAccept(Value: TSocketMessageEvent);
|
|
procedure SetOnClose(Value: TSocketMessageEvent);
|
|
procedure SetOnConnect(Value: TSocketMessageEvent);
|
|
procedure SetOnError(Value: TSocketMessageEvent);
|
|
procedure SetOnListen(Value: TSocketMessageEvent);
|
|
procedure SetOnOOB(Value: TSocketMessageEvent);
|
|
procedure SetOnRead(Value: TSocketMessageEvent);
|
|
procedure SetOnWrite(Value: TSocketMessageEvent);
|
|
|
|
published
|
|
property IPAddress: String read GetIPAddress write SetIPAddress;
|
|
property PortNumber: LongInt read GetPortNumber write SetPortNumber;
|
|
property OnError: TSocketMessageEvent read FOnError write SetOnError;
|
|
property OnAccept: TSocketMessageEvent read FOnAccept write SetOnAccept;
|
|
property OnClose: TSocketMessageEvent read FOnClose write SetOnClose;
|
|
property OnConnect: TSocketMessageEvent read FOnConnect write SetOnConnect;
|
|
property OnRead: TSocketMessageEvent read FOnRead write SetOnRead;
|
|
property OnWrite: TSocketMessageEvent read FOnWrite write SetOnWrite;
|
|
property OnOOB: TSocketMessageEvent read FOnOOB write SetOnOOB;
|
|
property OnListen: TSocketMessageEvent read FOnListen write SetOnListen;
|
|
end;
|
|
|
|
procedure Register;
|
|
|
|
implementation
|
|
|
|
{$R *.dcr}
|
|
|
|
constructor TKOLSocket.Create(AOwner: TComponent);
|
|
begin
|
|
inherited Create(AOwner);
|
|
InstanceCount := InstanceCount + 1;
|
|
end; // constructor TKOLSocket.Create
|
|
|
|
destructor TKOLSocket.Destroy;
|
|
begin
|
|
inherited Destroy;
|
|
end; // destructor TKOLSocket.Destroy;
|
|
|
|
function TKOLSocket.GetIPAddress: String;
|
|
begin
|
|
Result := fIPAddress;
|
|
end; // function TKOLSocket.GetIPAddress: String
|
|
|
|
function TKOLSocket.GetPortNumber: LongInt;
|
|
begin
|
|
Result := fPortNumber;
|
|
end; // function TKOLSocket.GetPortNumber: Word
|
|
|
|
procedure TKOLSocket.SetIPAddress(NewIPAddress: String);
|
|
begin
|
|
fIPAddress := NewIPAddress;
|
|
Change;
|
|
end; // procedure TKOLSocket.SetIPAddress(NewIPAddress: String)
|
|
|
|
procedure TKOLSocket.SetPortNumber(NewPortNumber: LongInt);
|
|
begin
|
|
fPortNumber := NewPortNumber;
|
|
Change;
|
|
end; // procedure TKOLSocket.SetPortNumber(NewPortNumber: Word)
|
|
|
|
procedure TKOLSocket.SetOnAccept;
|
|
begin
|
|
fOnAccept := Value;
|
|
Change;
|
|
end;
|
|
|
|
procedure TKOLSocket.SetOnClose;
|
|
begin
|
|
fOnClose := Value;
|
|
Change;
|
|
end;
|
|
|
|
procedure TKOLSocket.SetOnConnect;
|
|
begin
|
|
fOnConnect := Value;
|
|
Change;
|
|
end;
|
|
|
|
procedure TKOLSocket.SetOnError;
|
|
begin
|
|
fOnError := Value;
|
|
Change;
|
|
end;
|
|
|
|
procedure TKOLSocket.SetOnListen;
|
|
begin
|
|
fOnListen := Value;
|
|
Change;
|
|
end;
|
|
|
|
procedure TKOLSocket.SetOnOOB;
|
|
begin
|
|
fOnOOB := Value;
|
|
Change;
|
|
end;
|
|
|
|
procedure TKOLSocket.SetOnRead;
|
|
begin
|
|
fOnRead := Value;
|
|
Change;
|
|
end;
|
|
|
|
procedure TKOLSocket.SetOnWrite;
|
|
begin
|
|
fOnWrite := Value;
|
|
Change;
|
|
end;
|
|
|
|
function TKOLSocket.AdditionalUnits;
|
|
begin
|
|
result := ', KOLSocket';
|
|
end;
|
|
|
|
procedure TKOLSocket.SetupFirst(SL: TStringList; const AName,
|
|
AParent, Prefix: String);
|
|
begin
|
|
SL.Add( Prefix + AName + ' := NewAsyncSocket;' );
|
|
SL.Add( Prefix + AName + '.PortNumber := ' + inttostr(fPortNumber) + ';');
|
|
SL.Add( Prefix + AName + '.IPAddress := ''' + fIPAddress + ''';');
|
|
end;
|
|
|
|
procedure TKOLSocket.SetupLast(SL: TStringList; const AName,
|
|
AParent, Prefix: String);
|
|
begin
|
|
//
|
|
end;
|
|
|
|
procedure TKOLSocket.AssignEvents(SL: TStringList; const AName: String);
|
|
begin
|
|
inherited;
|
|
DoAssignEvents( SL, AName,
|
|
[ 'OnConnect', 'OnAccept', 'OnListen', 'OnRead', 'OnWrite', 'OnOOB', 'OnClose', 'OnError' ],
|
|
[ @OnConnect , @OnAccept , @OnListen , @OnRead , @OnWrite , @OnOOB , @OnClose , @OnError ]);
|
|
end;
|
|
|
|
procedure Register;
|
|
begin
|
|
RegisterComponents('KOLAddons', [TKOLSocket]);
|
|
end;
|
|
|
|
end.
|
|
|