📄 idhostnameserver.pas
字号:
{ $HDR$}
{**********************************************************************}
{ Unit archived using Team Coherence }
{ Team Coherence is Copyright 2002 by Quality Software Components }
{ }
{ For further information / comments, visit our WEB site at }
{ http://www.TeamCoherence.com }
{**********************************************************************}
{}
{ $Log: 10189: IdHostnameServer.pas
{
{ Rev 1.0 2002.11.12 10:40:54 PM czhower
}
unit IdHostnameServer;
interface
{
2000-May-18: J. Peter Mugaas
-Ported to Indy
2000-Jan-13: MTL
-13-JAN-2000 MTL: Moved to new Palette Scheme (Winshoes Servers)
1999-May-13: Ozz Nixon
-Final version
Original Author: Ozz Nixon
Based on RFC 953
}
uses
Classes,
IdAssignedNumbers,
IdTCPServer;
Const
KnownCommands:Array [1..9] of string=
(
'HNAME', {Do not Localize}
'HADDR', {Do not Localize}
'ALL', {Do not Localize}
'HELP', {Do not Localize}
'VERSION', {Do not Localize}
'ALL-OLD', {Do not Localize}
'DOMAINS', {Do not Localize}
'ALL-DOM', {Do not Localize}
'ALL-INGWAY' {Do not Localize}
);
Type
THostNameGetEvent = procedure(Thread: TIdPeerThread) of object;
THostNameOneParmEvent = procedure(Thread: TIdPeerThread;Parm:String) of object;
TIdHostNameServer = class(TIdTCPServer)
protected
FOnCommandHNAME:THostNameOneParmEvent;
FOnCommandHADDR:THostNameOneParmEvent;
FOnCommandALL:THostNameGetEvent;
FOnCommandHELP:THostNameGetEvent;
FOnCommandVERSION:THostNameGetEvent;
FOnCommandALLOLD:THostNameGetEvent;
FOnCommandDOMAINS:THostNameGetEvent;
FOnCommandALLDOM:THostNameGetEvent;
FOnCommandALLINGWAY:THostNameGetEvent;
//
function DoExecute(Thread: TIdPeerThread): boolean; override;
public
constructor Create(AOwner: TComponent); override;
published
property OnCommandHNAME: THostNameOneParmEvent read fOnCommandHNAME write fOnCommandHNAME;
property OnCommandHADDR: THostNameOneParmEvent read fOnCommandHADDR write fOnCommandHADDR;
property OnCommandALL: THostNameGetEvent read fOnCommandALL write fOnCommandALL;
property OnCommandHELP: THostNameGetEvent read fOnCommandHELP write fOnCommandHELP;
property OnCommandVERSION: THostNameGetEvent read fOnCommandVERSION write fOnCommandVERSION;
property OnCommandALLOLD: THostNameGetEvent read fOnCommandALLOLD write fOnCommandALLOLD;
property OnCommandDOMAINS: THostNameGetEvent read fOnCommandDOMAINS write fOnCommandDOMAINS;
property OnCommandALLDOM: THostNameGetEvent read fOnCommandALLDOM write fOnCommandALLDOM;
property OnCommandALLINGWAY: THostNameGetEvent read fOnCommandALLINGWAY write fOnCommandALLINGWAY;
end;
implementation
uses
IdGlobal,
SysUtils;
constructor TIdHostNameServer.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
DefaultPort := IdPORT_HOSTNAME;
end;
function TIdHostNameServer.DoExecute(Thread: TIdPeerThread): boolean;
Var
S,sCmd:String;
begin
result := true;
while Thread.Connection.Connected do
begin
S := Thread.Connection.ReadLn;
sCmd := UpperCase ( Fetch ( s, CHAR32 ) );
case Succ(PosInStrArray ( Uppercase ( sCmd ), KnownCommands ) ) of
1 : {hname}
if assigned ( OnCommandHNAME ) then
OnCommandHNAME ( Thread, S );
2 : {haddr}
if assigned ( OnCommandHADDR ) then
OnCommandHADDR ( Thread, S );
3 : {all}
if assigned ( OnCommandALL ) then
OnCommandALL ( Thread );
4 : {help}
if assigned ( OnCommandHELP ) then
OnCommandHELP ( Thread );
5 : {version}
if assigned ( OnCommandVERSION ) then
OnCommandVERSION ( Thread );
6 : {all-old}
if assigned ( OnCommandALLOLD ) then
OnCommandALLOLD ( Thread );
7 : {domains}
if assigned ( OnCommandDOMAINS ) then
OnCommandDOMAINS ( Thread );
8 : {all-dom}
if assigned ( OnCommandALLDOM ) then
OnCommandALLDOM ( Thread );
9 : {all-ingway}
if assigned ( OnCommandALLINGWAY ) then
OnCommandALLINGWAY ( Thread );
end; //while Thread.Connection.Connected do
end; //while Thread.Connection.Connected do
Thread.Connection.Disconnect;
end; {doExecute}
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -