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

📄 chat.~pas

📁 局域网聊天的小程序,适合学习.http连接
💻 ~PAS
字号:
unit chat;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Mask, StdCtrls, Sockets;

type
  TClientDataThread=class(TThread)
  private
  public
    ListBuffer:TStringlist;
    TargetList:TStrings;
    procedure SynchAddDataToControl;
    constructor create(CreateSuspended:boolean);
    procedure Execute;override;
    procedure Terminate;
  end;
  TForm1 = class(TForm)
    TcpServer1: TTcpServer;
    TcpClient1: TTcpClient;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Memo1: TMemo;
    Memo2: TMemo;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure TcpServer1Accept(Sender: TObject;
      ClientSocket: TCustomIpClient);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
constructor TClientDataThread.create(createsuspended:boolean);
begin
  inherited create(createsuspended);
  freeonterminate:=true;
  listbuffer:=tstringlist.Create ;
end;

procedure  TClientDataThread.Terminate ;
begin
  listbuffer.Free ;
  inherited;
end;

procedure TClientDataThread.Execute ;
begin
  //synchronize(SynchAddDataToControl);
  synchronize(SynchAddDataToControl);

end;

procedure TClientDataThread.synchAddDataToControl ;
begin
  targetlist.AddStrings(listbuffer);
end;



procedure TForm1.Button1Click(Sender: TObject);
begin
  tcpserver1.LocalPort :=edit3.Text ;
  tcpserver1.Active :=true;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
i:integer;
begin
  tcpclient1.RemoteHost :=edit1.Text ;
  tcpclient1.RemotePort :=edit2.Text ;
  try
   if tcpclient1.Connect then
     for i:=0 to memo2.Lines.Count -1 do
       tcpclient1.Sendln(memo2.Lines[i]);
   finally
     tcpclient1.Disconnect ;
  end;
end;

procedure TForm1.TcpServer1Accept(Sender: TObject;
  ClientSocket: TCustomIpClient);
  var
  s:string;
  dataThread:tclientdatathread;
begin
  datathread:=TClientDataThread.create(true);
  datathread.TargetList :=memo1.Lines ;

  datathread.ListBuffer.Add('***connection accepted***');
  datathread.ListBuffer.Add('remote host::'+
     clientsocket.LookupHostName(clientsocket.RemoteHost)+
     '('+clientsocket.RemoteHost +')');

  datathread.ListBuffer.Add('=======begin message========');

  s:=clientsocket.Receiveln();
  while s<>'' do
  begin
    datathread.ListBuffer.Add(s);
    s:=clientsocket.Receiveln();
  end;
  datathread.ListBuffer.Add('=======end message========');

  datathread.Resume ;
end;

end.

⌨️ 快捷键说明

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