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

📄 unit1.~pas

📁 实现局部网及时聊天等很多功能,包括视频
💻 ~PAS
字号:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    tcpClient: TIdTCPClient;
    tcpServer: TIdTCPServer;
    IdAntiFreeze1: TIdAntiFreeze;
    GroupBox1: TGroupBox;
    Label6: TLabel;
    editHost: TEdit;
    Label7: TLabel;
    editPort: TEdit;
    btnLogin: TButton;
    btnOut: TButton;
    GroupBox2: TGroupBox;
    lbUser: TListBox;
    GroupBox3: TGroupBox;
    memoTalkInfo: TMemo;
    GroupBox4: TGroupBox;
    memoSystemInfo: TMemo;
    GroupBox5: TGroupBox;
    editMessage: TEdit;
    cbUser: TComboBox;
    btnSend: TButton;
    procedure btnloginClick(Sender: TObject);
    procedure btnsendClick(Sender: TObject);
    procedure tcpServerConnect(AThread: TIdPeerThread);
    procedure tcpServerExecute(AThread: TIdPeerThread);
    procedure btnOutClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btnloginClick(Sender: TObject);
begin
tcpClient.Host:=editHost.Text;
tcpClient.Port:=strtoint(editPort.Text);
tcpServer.DefaultPort:=6061; //定义本地服务器端口
tcpServer.Active:=true;   //开启本地服务器
memoSystemInfo.Lines.Add(DateTimeToStr(Now())+':正在连接'+edithost.Text);
try
tcpClient.Connect(5000);
try
memoSystemInfo.Lines.Add(DateTimeToStr(Now())+':'+tcpClient.ReadLn());
//lbUser.Items.CommaText:=tcpClient.ReadLn();
//cbUser.Items.CommaText:=lbUser.Items.CommaText;
//cbUser.ItemIndex:=0;
btnLogin.Enabled:=false;
btnOut.Enabled:=true;
btnSend.Enabled:=true;
except
memoSystemInfo.Lines.Add(DateTimeToStr(Now())+':无法连接服务器!');
tcpClient.Disconnect();
end;
except
memoSystemInfo.Lines.Add(DateTimeToStr(Now())+':无法连接到'+editHost.Text+'服务器!');
end;
end;

procedure TForm1.btnsendClick(Sender: TObject);
begin
//editmessage.Text:=cbUser.Text;
memoTalkInfo.Lines.Add(DateTimeToStr(Now())+':你微笑地对说:'+cbUser.Text+','+editMessage.Text);
tcpClient.WriteLn(cbUser.Text+','+editMessage.Text);
memoSystemInfo.Lines.Add(DateTimeToStr(Now())+':'+tcpClient.ReadLn());
end;

procedure TForm1.tcpServerConnect(AThread: TIdPeerThread);
begin
Athread.Connection.WriteLn('发送成功!');
end;

procedure TForm1.tcpServerExecute(AThread: TIdPeerThread);
var
tempstring:string;
i:integer;
begin
tempstring:=AThread.Connection.ReadLn();
i:=Length(tempstring);
if Leftstr(tempstring,1)='q' then
begin
memoSystemInfo.Lines.Add(DateTimeToStr(Now())+':服务器停止!');
lbUser.Clear;
cbUser.Clear;
tcpClient.Disconnect();
btnLogin.Enabled:=true;
btnOut.Enabled:=false;
btnSend.Enabled:=false;
end
else if Leftstr(tempstring,1)='p' then
begin
lbUser.Items.CommaText:=RightStr(tempstring,i-1);
cbUser.Items.CommaText:=lbUser.Items.CommaText;
cbUser.ItemIndex:=0;
end
else
memoTalkInfo.Lines.Add(DateTimeToStr(Now())+':'+tempstring);
end;

procedure TForm1.btnOutClick(Sender: TObject);
begin
tcpClient.WriteLn('QUIT');
memoSystemInfo.Lines.Add(DateTimeToStr(Now())+':退出服务器!');
lbUser.Clear;
cbUser.Clear;
tcpClient.Disconnect();
btnLogin.Enabled:=true;
btnOut.Enabled:=false;
btnSend.Enabled:=false;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if btnOut.Enabled then
tcpClient.WriteLn('QUIT');
end;

end.

⌨️ 快捷键说明

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