Delphi IdHttp组件+IdHttpServer组件实现文件下载服务
2016-03-15 09:45
459 查看
uses idhttp,IdHTTPServer;
//idhttp组件提交下载请求
procedure TVodService.Button3Click(Sender: TObject);
var
h:TIdhttp;
MyStream:TMemoryStream;
url:string;
begin
MyStream:=TMemoryStream.Create;
h:=Tidhttp.Create(nil);
url:='http://192.168.0.254:9003/GetIni';//请求地址
try
h.get(url,MyStream);//提交请求 except
Application.Messagebox('网络出错,请检查网络连接','出错框',MB_OK+MB_ICONERROR) ;
MyStream.Free;
h.free;
exit;
end;
MyStream.SaveToFile(extractfilepath(application.exename)+'System.ini');
MyStream.Free;
h.free;
end;
//IdHttpSever组件响应请求
procedure TVodService.DataModuleCreate(Sender: TObject);//初始化IdHttpServer组件
var
hport:integer;
Binding : TIdSocketHandle;
begin
try
VodHttpServer.Bindings.Clear;
Binding := VodHttpServer.Bindings.Add;
Binding.Port:=9003;
binding.IP:='192.168.0.254';
VodHttpServer.Active:=true;
except
on e:Exception do
begin
FrmMain_VodSer.write_Logfile('加载APP设置error '+e.message);
end;
end;
end;
procedure TVodService.VodHttpServerCommandGet(AThread: TIdPeerThread;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);//响应请求
var
ByteSent: Cardinal;
LocalDoc:string;
tempstr,ips:string;
len,sport:integer;
begin
tempstr:=ARequestInfo.Document; //获取请求字符串
ips:=TIdIOHandlerSocket(AThread.Connection.IOHandler).Binding.PeerIP;//获取请求地址
sport:=TIdIOHandlerSocket(AThread.Connection.IOHandler).Binding.PeerPort;//获取请求端口
if fileexists(extractfilepath(application.exename)+'System.ini') then
begin
LocalDoc:=extractfilepath(application.exename)+'System.ini';
ByteSent :=VodHttpServer.ServeFile(AThread, AResponseInfo, LocalDoc);
end else
begin
Application.Messagebox('没有找到文件System.ini!','提示框',MB_OK+MB_ICONERROR) ;
end;
end;
//idhttp组件提交下载请求
procedure TVodService.Button3Click(Sender: TObject);
var
h:TIdhttp;
MyStream:TMemoryStream;
url:string;
begin
MyStream:=TMemoryStream.Create;
h:=Tidhttp.Create(nil);
url:='http://192.168.0.254:9003/GetIni';//请求地址
try
h.get(url,MyStream);//提交请求 except
Application.Messagebox('网络出错,请检查网络连接','出错框',MB_OK+MB_ICONERROR) ;
MyStream.Free;
h.free;
exit;
end;
MyStream.SaveToFile(extractfilepath(application.exename)+'System.ini');
MyStream.Free;
h.free;
end;
//IdHttpSever组件响应请求
procedure TVodService.DataModuleCreate(Sender: TObject);//初始化IdHttpServer组件
var
hport:integer;
Binding : TIdSocketHandle;
begin
try
VodHttpServer.Bindings.Clear;
Binding := VodHttpServer.Bindings.Add;
Binding.Port:=9003;
binding.IP:='192.168.0.254';
VodHttpServer.Active:=true;
except
on e:Exception do
begin
FrmMain_VodSer.write_Logfile('加载APP设置error '+e.message);
end;
end;
end;
procedure TVodService.VodHttpServerCommandGet(AThread: TIdPeerThread;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);//响应请求
var
ByteSent: Cardinal;
LocalDoc:string;
tempstr,ips:string;
len,sport:integer;
begin
tempstr:=ARequestInfo.Document; //获取请求字符串
ips:=TIdIOHandlerSocket(AThread.Connection.IOHandler).Binding.PeerIP;//获取请求地址
sport:=TIdIOHandlerSocket(AThread.Connection.IOHandler).Binding.PeerPort;//获取请求端口
if fileexists(extractfilepath(application.exename)+'System.ini') then
begin
LocalDoc:=extractfilepath(application.exename)+'System.ini';
ByteSent :=VodHttpServer.ServeFile(AThread, AResponseInfo, LocalDoc);
end else
begin
Application.Messagebox('没有找到文件System.ini!','提示框',MB_OK+MB_ICONERROR) ;
end;
end;
<span style="font-family:Arial, Helvetica, sans-serif;"><span style="white-space: normal;"> </span></span>
相关文章推荐
- GSM模块通过国家网络授时中心获取网络时间同步
- tcp三次握手 redis 连接超时
- Android面向HTTP协议发送post请求
- iOS检测网络状态
- 【Boost】boost库asio详解8——TCP的简单例子1
- HTTPS与SSL(二)
- HTTPS与SSL(一)
- HTTP协议详解
- iOS 网络请求及数据解析
- Java中实现HTTP网络通信(1.1)
- HttpClient自动请求服务器类的简单使用
- Netty4实战 - TCP粘包&拆包解决方案
- 自组织神经网络介绍:自组织特征映射SOM(Self-organizing feature Map),第三部分
- 自组织神经网络介绍:自组织特征映射SOM(Self-organizing feature Map),第三部分
- 自组织神经网络介绍:自组织特征映射SOM(Self-organizing feature Map),第三部分
- [HDU 4289]Control[网络流][拆点]
- Deep Learning模型之:CNN卷积神经网络(二) 文字识别系统LeNet-5
- TCP连接和断开
- HttpClient那些事儿
- 配置Tomcat使用https协议(配置SSL协议)