//Server端
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent, IdComponent, IdTCPServer, StdCtrls;
type
TForm1 = class(TForm)
IdTCPServer1: TIdTCPServer;
Label1: TLabel;
procedure IdTCPServer1Execute(AThread: TIdPeerThread);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
FileName: string;
str: TMemoryStream;
begin
str := TMemoryStream.Create;
filename := athread.Connection.ReadLn;
athread.Connection.ReadStream(str);
str.SaveToFile(filename);
str.Free;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
IdTCPServer1.DefaultPort := 1000;
IdTCPServer1.Active := True;
end;
end.
//Client端
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient;
type
TForm1 = class(TForm)
IdTCPClient1: TIdTCPClient;
OpenDialog1: TOpenDialog;
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
str: tmemorystream;
filename: string;
begin
idtcpclient1.Host := '127.0.0.1';
idtcpclient1.Port := 1000;
{OpenDialog1.Execute;
if OpenDialog1.FileName = '' then exit else Edit1.Text := OpenDialog1.FileName; }
FileName := Edit1.Text;
if not IdTcpClient1.Connected then
idtcpclient1.Connect()
else
begin
str := tmemorystream.Create;
str.LoadFromFile(filename);
idtcpclient1.WriteLn(filename);
idtcpclient1.WriteStream(str, false, true);
str.Free;
end;
end;
end.