unit Unit4;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, IdGlobalProtocols,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IdContext, Vcl.StdCtrls,
IdCustomTCPServer, IdTCPServer, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient;
type
TForm4 = class(TForm)
IdTCPClient1: TIdTCPClient;
IdTCPServer1: TIdTCPServer;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure IdTCPServer1Execute(AContext: TIdContext);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
{$R *.dfm}
procedure TForm4.Button1Click(Sender: TObject);
var stream:TMemoryStream; x:Integer;
begin
self.IdTCPClient1.Host:=trim(edit1.Text);
self.IdTCPClient1.Port:=strtoint(trim(edit2.Text));
self.IdTCPClient1.Connect;
if idtcpclient1.Connected then
begin
self.Caption:='客户端连接成功';
end;
end;
procedure TForm4.Button2Click(Sender: TObject);
begin
self.IdTCPServer1.Bindings.Add.IP:=trim(edit3.Text);
self.IdTCPServer1.Bindings.Add.Port:=strtoint(trim(edit4.Text));
self.IdTCPServer1.Active:=true;
end;
procedure TForm4.Button3Click(Sender: TObject);
var stream:TMemoryStream; x:Integer; nsize:integer;
begin
stream:=tmemorystream.Create;
stream.LoadFromFile('d:\lianxiren.bmp') ;
nSize := FileSizeByName('d:\lianxiren.bmp');
self.IdTCPClient1.IOHandler.WriteLn(inttostr(nsize));
if idtcpclient1.Connected then
begin
// showmessage(inttostr(nsize));
self.IdTCPClient1.IOHandler.Write(stream);
// self.IdTCPClient1.
end;
end;
procedure TForm4.IdTCPServer1Execute(AContext: TIdContext);
var aa:tfilestream; cc:tmemorystream; iFileSize, i,j,k:integer;a,b,c:string; s:string;
label v1,v2,v3,v4,v5,v6,v7,v8,v9,v0;
var
f : TmemoryStream; //文件流
iTotalRec : Integer; //总接收到的字节数,用来和文件大小比较,如果比文件大小的值要小,就还要继续接收
iacRec : Integer; //每一次ReceiveBuf实际接收到的字节数
pbuf : Pointer; //缓存指针
fn : string; //文件名
h1,h2,h3:thandle; poi,poi2:tpoint; kk:integer;
begin
cc:=tmemorystream.Create;
s:= acontext.Connection.IOHandler.ReadLn;
iFileSize:=strtoint(s);
// cc.SetSize(ifilesize);
// cc.Seek(0,0);
acontext.Connection.IOHandler.ReadStream(cc,ifilesize);
cc.SaveTofile('d:\aaa334455.bmp');
end;
end.