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

📄 uclient.pas

📁 轻巧的TCP 客户端与服务器端通讯测试套件.可以在两处分别安装客户端与服务器端,就可以测试TCP是否可以通讯了.采用了INDY的TCP套件完成
💻 PAS
字号:
unit UClient;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  StdCtrls, ComCtrls, Mask, ToolEdit,math, DB, ADODB, DBClient;

type
  TForm1 = class(TForm)
    client: TIdTCPClient;
    send: TMemo;
    st: TStatusBar;
    Button1: TButton;
    Button2: TButton;
    recv: TMemo;
    Button3: TButton;
    Button4: TButton;
    edtFile: TFilenameEdit;
    edtRemDIr: TEdit;
    Button5: TButton;
    ADOQuery1: TADOQuery;
    Button6: TButton;
    ClientDataSet1: TClientDataSet;
    procedure Button1Click(Sender: TObject);
    procedure clientStatus(ASender: TObject; const AStatus: TIdStatus;
      const AStatusText: String);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
uses udm;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var s:string;
begin
if client.Connected then
client.Disconnect
else
begin
client.Port:=serverport;
client.Connect;
//client.Writeln('test');
//s:=client.ReadLn;
//recv.Lines.add(s);
end;
end;

procedure TForm1.clientStatus(ASender: TObject; const AStatus: TIdStatus;
  const AStatusText: String);
begin
st.Panels[0].Text:=astatustext;
end;

procedure TForm1.Button2Click(Sender: TObject);
var s:string;
begin
client.Writeln('ECHO');
client.Writeln('Test');
s:=client.ReadLn;
recv.Lines.add(s);
end;

procedure TForm1.Button3Click(Sender: TObject);
var s:string;
begin
client.Writeln('MEMO');
client.writestrings(send.Lines,true);
s:=client.ReadLn;
recv.Lines.add(s);
end;

procedure TForm1.Button4Click(Sender: TObject);
var t:Tfilestream;s:string;
begin
if not fileexists(edtFile.text) then
begin showmessage('noFileExist');exit;end;
client.WriteLn('FILE');
client.WriteLn(edtFile.text);
client.WriteLn(edtRemDir.text);
t:=Tfilestream.Create(edtFile.Text,fmOpenRead	);
t.Position:=0;
client.WriteStream(t,true,true);
t.free;
s:=client.ReadLn;
recv.Lines.add(s);
end;

procedure TForm1.Button5Click(Sender: TObject);
var t:Tfilestream;s:string;
buf:array [0..1024] of byte;
iCount:integer;
begin
if not fileexists(edtFile.text) then
begin showmessage('noFileExist');exit;end;
client.WriteLn('FILELARGE');
client.WriteLn(edtFile.text);
client.WriteLn(edtRemDir.text);
t:=Tfilestream.Create(edtFile.Text,fmOpenRead	);
t.Position:=0;
client.Writeinteger(t.size);
//iCount:=ceil(t.Size/length(buf));
while t.size>t.Position do //for i:=0 to iCount do
begin
if (t.size-t.Position)>length(buf) then
iCount:=length(buf)
else
iCount:=(t.size-t.Position);
t.ReadBuffer(buf,iCount);
client.Writebuffer(buf,iCount);
end;
t.free;
s:=client.ReadLn;
recv.Lines.add(s);
end;


procedure TForm1.Button6Click(Sender: TObject);
var t:Tfilestream;s:string;
f:string;
begin
f:='c:\ls1';
adoquery1.Open;
adoquery1.SaveToFile(f);
adoquery1.close;
edtFile.Text:=f;
if not fileexists(edtFile.text) then
begin showmessage('noFileExist');exit;end;
client.WriteLn('ADOFILE');
//client.WriteLn(edtFile.text);
//client.WriteLn(edtRemDir.text);
t:=Tfilestream.Create(f,fmOpenRead	);
t.Position:=0;
client.WriteStream(t,true,true);
t.free;
s:=client.ReadLn;
recv.Lines.add(s);
end;

end.

⌨️ 快捷键说明

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