IdTCPClient和IdTCPServer如何进行文件传输?(100分)

  • 主题发起人 主题发起人 zhoujian010
  • 开始时间 开始时间
Z

zhoujian010

Unregistered / Unconfirmed
GUEST, unregistred user!
哪位高手知道如何利用这两个组件进行文件的上传和下载?
能否给出代码。
 
是发送一个照片的例子,你可以修改一下。用TCP来进行收发文件是比较简单的。

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, IdTCPConnection, IdTCPClient,
IdBaseComponent, IdComponent, IdTCPServer;

type
TForm1 = class(TForm)
IdTCPServer1: TIdTCPServer;
IdTCPClient1: TIdTCPClient;
Image1: TImage;
Image2: TImage;
BitBtn1: TBitBtn;
Bevel1: TBevel;
Bevel3: TBevel;
Bevel4: TBevel;
procedure BitBtn1Click(Sender: TObject);
procedure IdTCPServer1Execute(AThread: TIdPeerThread);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
var
Temp:TMemoryStream;
begin
Temp:=TMemoryStream.Create;
//将图像文件保存到内存流
Image1.Picture.Graphic.SaveToStream(Temp);
//发送图像信息
IdTCPClient1.Connect();
IdTCPClient1.writestream(Temp);
IdTCPClient1.Disconnect();
Temp.Free ;
end;

procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
const
TempImageFile='c:/test.bmp';
//设置的临时图像文件
var
t:TMemoryStream;
begin
t:=TMemoryStream.Create;
AThread.Connection.ReadStream(t,-1,True);
//从连接中取得流式数据
t.SaveToFile(TempImageFile);
Image2.Picture.LoadFromFile(TempImageFile);
t.Free ;
end;

end.
 
tcp的文件发送接收我想可以分成一下几步。
发送方
1,获得要发送文件的文件名,大小。把文件的信息发出去,等待回应
2,收到发送数据的回应,开始发送
3,发送完毕,断开连接。
接收方
1,收到文件信息,创建一个文件,以读写方式打开它,告诉发送方开始发送
2,接收数据,写入文件。
3,收完了,断开连接。
 
后退
顶部