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

📄 unit1.pas

📁 利用delphi 中的IDTCPSERVER空间编写的网络聊天服务器端程序
💻 PAS
字号:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    EdtPort: TEdit;
    Label1: TLabel;
    EdtData: TEdit;
    LbLog: TListBox;
    Label2: TLabel;
    BtnStart: TButton;
    BtnStop: TButton;

    Button3: TButton;
    IdTCPServer: TIdTCPServer;
    procedure BtnStartClick(Sender: TObject);
    procedure BtnStopClick(Sender: TObject);
    procedure IdTCPServerConnect(AThread: TIdPeerThread);
    procedure IdTCPServerExecute(AThread: TIdPeerThread);

  private
    { Private declarations }
  public
    { Public declarations }
    FLogEntry:string;
    FReceived:string;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BtnStartClick(Sender: TObject);
begin
IdTCPServer.DefaultPort := StrToInt(EdtPort.Text);

IdTCPServer.Active := True;

BtnStart.Enabled := False;

BtnStop.Enabled := True;

LbLog.Items.Add('服务器已成功启动!');


end;

procedure TForm1.BtnStopClick(Sender: TObject);
begin
IdTCPServer.Active := False;

BtnStart.Enabled := True;

BtnStop.Enabled := False;

LbLog.Items.Add('服务器已成功停止!');

end;








procedure TForm1.IdTCPServerConnect(AThread: TIdPeerThread);
begin
LbLog.Items.Add('来自主机 '

+ AThread.Connection.Socket.Binding.PeerIP

+ ' 的连接请求已被接纳!');

AThread.Connection.WriteLn('100: 欢迎连接到简单TCP服务器!');

end;



{procedure TFormMain.DisplayData();

begin

EdtData.Text := FReceived;

end;   }



{procedure TFormMain.AddLogEntry();

begin

LbLog.Items.Add(FLogEntry);

end;  }




procedure TForm1.IdTCPServerExecute(AThread: TIdPeerThread);
var

sCommand: string;

begin

with AThread.Connection do

begin

sCommand := ReadLn();

FLogEntry := sCommand + ' 来自于主机 '

+ AThread.Connection.Socket.Binding.PeerIP;

//AThread.Synchronize(AddLogEntry);
  LbLog.Items.Add(FLogEntry);
if AnsiStartsText('DATA ', sCommand) then

begin

FReceived := RightStr(sCommand, Length(sCommand)-5);

WriteLn('200: 数据接收成功!');

//AThread.Synchronize(DisplayData);
EdtData.Text := FReceived;

end

else if SameText(sCommand, 'QUIT') then begin

FLogEntry := '断开同主机 '

+ AThread.Connection.Socket.Binding.PeerIP

+ ' 的连接!';

//AThread.Synchronize(AddLogEntry);
LbLog.Items.Add(FLogEntry);
Disconnect;

end

else begin

WriteLn('500: 无法识别的命令!');

FLogEntry := '无法识别命令:' + sCommand;

//AThread.Synchronize(AddLogEntry);
LbLog.Items.Add(FLogEntry);

end;//endif

end;

end;


 


end.

⌨️ 快捷键说明

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