📄 netmain.pas
字号:
unit Netmain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, Sockets, StdCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
Label1: TLabel;
TcpServer1: TTcpServer;
TcpClient1: TTcpClient;
Label2: TLabel;
Edit1: TEdit;
Label3: TLabel;
Edit2: TEdit;
Label4: TLabel;
Edit3: TEdit;
Button1: TButton;
Memo1: TMemo;
Memo2: TMemo;
Button2: TButton;
Label5: TLabel;
Label6: TLabel;
procedure Button2Click(Sender: TObject);
procedure TcpServer1Accept(Sender: TObject;
ClientSocket: TCustomIpClient);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TClientDataThread = class(TThread)
private
public
ListBuffer :TStringList;
TargetList :TStrings;
procedure synchAddDataToControl;
constructor Create(CreateSuspended: Boolean);
procedure Execute; override;
procedure Terminate;
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);
end;
procedure TClientDataThread.synchAddDataToControl;
begin
TargetList.AddStrings(ListBuffer);
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);
// 令Memo1显示的内容与DataThread关连
DataThread.TargetList := Memo1.lines;
// 将收到的信息写入Threads ListBuffer
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 of message =====');
// 将收到的信息刷新到ListBuffer
DataThread.Resume;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
TcpServer1.LocalPort := Edit3.Text;
TcpServer1.Active := True;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -