⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainform.pas

📁 borland delphi 7 的indy client源代码
💻 PAS
字号:
{-----------------------------------------------------------------------------
 Demo Name: main
 Author:    <unknown - please ocntact me to take credit! - Allen O'Neill>
 Copyright: Indy Pit Crew
 Purpose:
 History:
 Date:      27/10/2002 00:58:50
 Checked with Indy version: 9.0 - Allen O'Neill - Springboard Technologies Ltd  - http://www.springboardtechnologies.com
-----------------------------------------------------------------------------
 Notes:

 Demonstrates use of a basic finger server
}



unit mainform;

interface

uses
  Windows, Messages, Graphics, Controls, Forms, Dialogs, StdCtrls,
  SysUtils, Classes, IdComponent, IdTCPServer, IdFingerServer,
  IdBaseComponent;

type
  TfrmFingerServer = class(TForm)
    IdFingerServer1: TIdFingerServer;
    Label1: TLabel;
    lblStatus: TLabel;
    procedure IdFingerServer1CommandFinger(AThread: TIdPeerThread;
      const AUserName: String);
    procedure IdFingerServer1CommandVerboseFinger(AThread: TIdPeerThread;
      const AUserName: String);
    procedure IdFingerServer1Connect(AThread: TIdPeerThread);
    procedure IdFingerServer1Disconnect(AThread: TIdPeerThread);
    procedure FormActivate(Sender: TObject);
  private
  public
  end;

var
  frmFingerServer: TfrmFingerServer;

implementation
{$R *.DFM}

uses
  IdGlobal;

{These are our sample users}

Const SampleUsers : Array [1..3] of String =
  ('TIDFINGER', 'TIDQUOTD', 'TIDTIME');

procedure TfrmFingerServer.IdFingerServer1CommandFinger(AThread: TIdPeerThread;
  const AUserName: String);

begin
  {general querry - just list users}
  if AUserName = '' then
  begin
    AThread.Connection.WriteLn('TIdFinger');
    AThread.Connection.WriteLn('TIdQuotD');
    AThread.Connection.WriteLn('TIdTime');
  end //if AUserName = '' then
  else
  begin {Just Provide brief information}
    Case Succ ( PosInStrArray ( Uppercase ( AUserName ), SampleUsers ) ) of
      1 : //TIdFinger
          begin
            AThread.Connection.WriteLn('TIdFinger implements RFC 1288');
          end; {1}
      2 : //TIdQuotD
          begin
            AThread.Connection.WriteLn('TIdQuotD implements RFC 865');
          end; {2}
      3 : //TIdTime
          begin
            AThread.Connection.WriteLn('TIdTime implements RFC 868');
          end; {3}
      else
      begin  {This user is not on our system}
        AThread.Connection.WriteLn( AUserName + '?' );
      end; //else..case
    end; //Case Succ ( PosInStrArray ( Uppercase ( AUserName ), SampleUsers ) ) of
  end; //if AUserName = '' then
end;

procedure TfrmFingerServer.IdFingerServer1CommandVerboseFinger(
  AThread: TIdPeerThread; const AUserName: String);
begin
  AThread.Connection.WriteLn('Verbose query');
   {general querry - just list users}
  if AUserName = '' then
  begin
    AThread.Connection.WriteLn('TIdFinger');
    AThread.Connection.WriteLn('TIdQuotD');
    AThread.Connection.WriteLn('TIdTime');
  end //if AUserName = '' then
  else
  begin {Just Provide brief information}
    Case Succ ( PosInStrArray ( Uppercase ( AUserName ), SampleUsers ) ) of
      1 : //TIdFinger
          begin
            AThread.Connection.WriteLn('TIdFinger implements RFC 1288');
            AThread.Connection.WriteLn('');
            AThread.Connection.WriteLn('Finger is used to provide information');
            AThread.Connection.WriteLn('such as if the user is logged into a');
            AThread.Connection.WriteLn('mainframe, when they last checked their');
            AThread.Connection.WriteLn('E-Mail and received new E-Mail.  It');
            AThread.Connection.WriteLn('can also provide other information such');
            AThread.Connection.WriteLn('what a user puts into a plan file.');
          end; {1}
      2 : //TIdQuotD
          begin
            AThread.Connection.WriteLn('TIdQuotD implements RFC 865');
            AThread.Connection.WriteLn('');
            AThread.Connection.WriteLn('Quote of the Day is used for testing');
            AThread.Connection.WriteLn('TCP development by providing a quote.');
            AThread.Connection.WriteLn('to the client.  It is sometimes used');
            AThread.Connection.WriteLn('brief information for anybody.');
          end; {2}
      3 : //TIdTime
          begin
            AThread.Connection.WriteLn('TIdTime implements RFC 868');
            AThread.Connection.WriteLn('');
            AThread.Connection.WriteLn('Time is used for synchronizing clocks');
            AThread.Connection.WriteLn('on a local area network.  For accurate');
            AThread.Connection.WriteLn('synchronization, use SNTP (Simple');
            AThread.Connection.WriteLn('Network Time Protocol).');

          end; {3}
      else
      begin  {This user is not on our system}
        AThread.Connection.WriteLn( AUserName + '?' );
      end; //else..case
    end; //Case Succ ( PosInStrArray ( Uppercase ( AUserName ), SampleUsers ) ) of
  end; //if AUserName = '' then
end;

procedure TfrmFingerServer.IdFingerServer1Connect(AThread: TIdPeerThread);
begin
lblStatus.caption := '[ connected to client ]';
end;

procedure TfrmFingerServer.IdFingerServer1Disconnect(
  AThread: TIdPeerThread);
begin
lblStatus.caption := '[ idle ]';
end;

procedure TfrmFingerServer.FormActivate(Sender: TObject);
begin  try    IdFingerServer1.Active := True;  except  on E : Exception do    ShowMessage('Cannot bind socket - is port already in use?');  end;end;
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -