【delphi开源代码栏目提醒】:网学会员鉴于大家对delphi开源代码十分关注,论文会员在此为大家搜集整理了“chat.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;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure TcpServer1Accept(Sender: TObject;
ClientSocket: TCustomIpClient);
procedure Button3Click(Sender: TObject);
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
tcpclient1.Open;
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;
procedure TForm1.Button3Click(Sender: TObject);
begin
memo1.Lines.Clear ;
end;
end.
上一篇:
ChartUnit.pas
下一篇:
谈谈我国养老旅游产品开发策略