文件传输服务器实例,Indy10文件传输无过程(含服务器端以及客户端源码)

【实例简介】

【实例截图】

5192d95066efbfb8a11bd3f6f884a913.png

82488a3a394f05b8c5a85516201879f0.png

【核心代码】

unit server;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdCustomTCPServer,

IdTCPServer, IdContext;

type

TForm_FileTransimision = class(TForm)

Edit_path: TEdit;

Button_selectPath: TButton;

Button_start: TButton;

Button_cancel: TButton;

IdTCPServer1: TIdTCPServer;

OpenDialog1: TOpenDialog;

procedure Button_selectPathClick(Sender: TObject);

procedure Button_startClick(Sender: TObject);

procedure IdTCPServer1Execute(AContext: TIdContext);

procedure Button_cancelClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form_FileTransimision: TForm_FileTransimision;

AFileStream: TFileStream;

implementation

{$R *.dfm}

procedure TForm_FileTransimision.Button_cancelClick(Sender: TObject);

begin

AFileStream.Free;

end;

procedure TForm_FileTransimision.Button_selectPathClick(Sender: TObject);

begin

if OpenDialog1.Execute then

Edit_path.Text := OpenDialog1.FileName;

end;

procedure TForm_FileTransimision.Button_startClick(Sender: TObject);

begin

if not FileExists(Edit_path.Text) then //检测文件是否存在

begin

Showmessage('文件不存在,请选择文件!');

exit;

end;

AFileStream := TFileStream.Create(Edit_path.Text, fmOpenRead);

end;

procedure TForm_FileTransimision.IdTCPServer1Execute(AContext: TIdContext);

var

cmd: string; //接收到客户端的字符串信息

begin

with AContext.Connection do //已经连街上的一个进程

begin

cmd := UpperCase(IOHandler.ReadLn); //客户端发送的命令字符串

if cmd = 'BEGIN' then //开始传输

begin

//告诉远程传输文件的大小和文件名

IOHandler.WriteLn(Format('%d|%s', [AFileStream.Size, ExtractFileName(Edit_path.Text)]));

IOHandler.Write(AFileStream,AFileStream.Size);

//Exit;

end;

if cmd = 'END' then

begin //传输完成

AFileStream.Free;

Exit;

end;

{if cmd = 'CANCEL' then

begin //传输取消

//保持传输状态

Exit;

end; }

end;

end;

end.

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2021 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值