编程中协议应用
民生教育 2021-08-24 13:36 字号: 大 中 小
Http协议的通信遵循一定的约定.例如,请求一个文件的时候先发送Get请求,然后服务器会返回请求的数据.如果需要进行断点传输,那么先发送\'HEAD /\'请求,其中返回的\'Content-Length: \'就是文件实际大小.将其和我们本地需要断点下载的文件大小比较,发送GET请求和发送需要下载的文件开始位置\'RANGE: bytes=\'+inttostr(iFilePos)+\'-\'+#13#10;服务器如果支持断点下载的话就会接着发送余下的数据了.因为这方面的文章比较多,我在这里就不详细讲述了.感兴趣的朋友可以自行查阅相关资料或者RFC文档。
当然,如果你是个懒人,也可以直接采用Delphi自带的控件.以Delphi6的INDY组件为例.新建一个工程,放上一个TIdHTTP控件,一个TIdAntiFreeze控件,一个TProgressBar用于显示下载进度.最后放上一个TButton用于开始执行我们的命令.代码如下:
procedure tton1Click(Sender: TObject);//点击按钮的时候开始下载我们的文件
var
MyStream:TMemoryStream;
begin
lyWhenIdle:=False;//设置使程序有反应.
MyStream:=eate;
try
t(\'\',MyStream);//下载我站点的一个ZIP文件
except//INDY控件一般要使用这种try..except结构.
Showmessage(\'络出错!\');
ee;
Exit;
end;
veToFile(\'c:\\p\');
ee;
Showmessage(\'OK\');
end;
procedure HTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer);//开始下载前,将ProgressBar1的最大值设置为需要接收的数据大小.
三河燕达健康城进入设备安装、人员招培阶段 begin
x:=AWorkCountMax;
n:=0;
sition:=0;
end;
procedure HTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);//接收数据的时候,进度将在ProgressBar1显示出来.
begin
sition:=sition+AWorkCount;
end;
IdHTTP1的Get还有一种形式就是获取字符串:例如,上面的程序可以改写成:
procedure tton1Click(Sender: TObject);
var
MyStr:String;
begin
lyWhenIdle:=False;//设置使程序有反应.
try
MyStr:=t(\'\');
except
Showmessage(\'络出错!\');
Exit;
end;
Showmessage(MyStr);
end;
应用:现在很多程序都有自动升级功能,实际上就是应用了GET.先在自己站点放一个文本文件注明程序版本号,当检查升级的时候,取文本内容与当前版本号比较,然后决定升级与否.
肾功能不全高血压能治好吗杭州好医院白癜风
武汉哪医院妇科好
-
-
马德里竞技VS埃瓦尔西蒙尼没有邀请莫拉塔搭配
马德里竞技 VS 埃瓦尔,西蒙尼:没有邀请莫拉塔马竞主帅西蒙...
2020-06-06 | 民生教育
-
-
山西完善临时救助制度紧急情况可先救助再审
山西完善临时救助制度 紧急情况可先救助再审批中新太原1月...
2019-12-17 | 民生教育
-
-
男子凌晨跑步偷走路虎称车主未锁车也应担责
男子凌晨跑步偷走路虎 称车主未锁车也应担责京华时报讯(记...
2019-07-16 | 民生教育
-
-
坪山新区全面发力加快东进
坪山新区全面发力加快东进深圳实施“东进”战略路途上,坪...
2019-07-13 | 民生教育
-
-
省会民心河换装打造城市新景观
省会民心河“换装” 打造城市新景观 (记者 徐艳 报道)...
2019-07-11 | 民生教育
-
-
安居区春风助老脱贫法律援助专项行动正式启
安居区“春风”助老脱贫法律援助专项行动正式启动安居区“...
2019-07-06 | 民生教育