http://blog.csdn.net/xxkku521/article/details/16864759

Delphi IdHttp组件+IdHttpServer组件实现文件下载服务

2013-11-21 18:15 2624人阅读 评论(0) 收藏 举报
 分类:
DELPHI(10) 

版权声明:本文为博主原创文章,未经博主允许不得转载。

  1. uses idhttp,IdHTTPServer;
  2. //idhttp组件提交下载请求
  3. procedure TVodService.Button3Click(Sender: TObject);
  4. var
  5. h:TIdhttp;
  6. MyStream:TMemoryStream;
  7. url:string;
  8. begin
  9. MyStream:=TMemoryStream.Create;
  10. h:=Tidhttp.Create(nil);
  11. url:='http://192.168.0.254:9003/GetIni';//请求地址
  12. try
  13. h.get(url,MyStream);//提交请求     except
  14. Application.Messagebox('网络出错,请检查网络连接','出错框',MB_OK+MB_ICONERROR) ;
  15. MyStream.Free;
  16. h.free;
  17. exit;
  18. end;
  19. MyStream.SaveToFile(extractfilepath(application.exename)+'System.ini');
  20. MyStream.Free;
  21. h.free;
  22. end;
  23. //IdHttpSever组件响应请求
  24. procedure TVodService.DataModuleCreate(Sender: TObject);//初始化IdHttpServer组件
  25. var
  26. hport:integer;
  27. Binding : TIdSocketHandle;
  28. begin
  29. try
  30. VodHttpServer.Bindings.Clear;
  31. Binding := VodHttpServer.Bindings.Add;
  32. Binding.Port:=9003;
  33. binding.IP:='192.168.0.254';
  34. VodHttpServer.Active:=true;
  35. except
  36. on e:Exception do
  37. begin
  38. FrmMain_VodSer.write_Logfile('加载APP设置error '+e.message);
  39. end;
  40. end;
  41. end;
  42. procedure TVodService.VodHttpServerCommandGet(AThread: TIdPeerThread;
  43. ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);//响应请求
  44. var
  45. ByteSent: Cardinal;
  46. LocalDoc:string;
  47. tempstr,ips:string;
  48. len,sport:integer;
  49. begin
  50. tempstr:=ARequestInfo.Document; //获取请求字符串
  51. ips:=TIdIOHandlerSocket(AThread.Connection.IOHandler).Binding.PeerIP;//获取请求地址
  52. sport:=TIdIOHandlerSocket(AThread.Connection.IOHandler).Binding.PeerPort;//获取请求端口
  53. if fileexists(extractfilepath(application.exename)+'System.ini') then
  54. begin
  55. LocalDoc:=extractfilepath(application.exename)+'System.ini';
  56. ByteSent :=VodHttpServer.ServeFile(AThread, AResponseInfo, LocalDoc);
  57. end else
  58. begin
  59. Application.Messagebox('没有找到文件System.ini!','提示框',MB_OK+MB_ICONERROR) ;
  60. end;
  61. end;

Delphi IdHttp组件+IdHttpServer组件实现文件下载服务的更多相关文章

  1. 构建简单的 C++ 服务组件,第 1 部分: 服务组件体系结构 C++ API 简介

    构建简单的 C++ 服务组件,第 1 部分: 服务组件体系结构 C++ API 简介 熟悉将用于 Apache Tuscany SCA for C++ 的 API.您将通过本文了解该 API 的主要组 ...

  2. 使用Topshelf组件构建简单的Windows服务

    很多时候都在讨论是否需要了解一个组件或者一个语言的底层原理这个问题,其实我个人觉得,对于这个问题,每个人都有自己的看法,个人情况不同,选择的方式也就会不同了.我个人觉得无论学习什么,都应该尝试着去了解 ...

  3. delphi中的idhttpserver如何才能收到idhttp发送来的exe\rar文件呢

    http://zhidao.baidu.com/link?url=-q2oXqYCKBZ9OgFDEHAcQwQEY_NroHcqGvVfKW67X5sF9LdjAAB_HPXQo04VxStFVS7 ...

  4. (十七)整合 Zookeeper组件,管理架构中服务协调

    整合 Zookeeper组件,管理架构中服务协调 1.Zookeeper基础简介 1.1 基本理论 1.2 应用场景 2.安全管理操作 2.1 操作权限 2.2 认证方式: 2.3 Digest授权流 ...

  5. django第13天(auth组件,forms组件,中间件,csrf)

    django第13天(auth组件,forms组件) auth组件 -auth组件 -auth是什么? -django内置的用户认证系统,可以快速的实现,登录,注销,修改密码.... -怎么用? -( ...

  6. K8s二进制部署单节点 master组件 node组件 ——头悬梁

    K8s二进制部署单节点   master组件 node组件   --头悬梁 1.master组件部署 2.node   组件部署 k8s集群搭建: etcd集群 flannel网络插件 搭建maste ...

  7. Vue.js学习 Item11 – 组件与组件间的通信

    什么是组件? 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能.在有 ...

  8. Vue中父子组件通讯——组件todolist

    一.todolist功能开发 <div id="root"> <div> <input type="text" v-model=& ...

  9. $Django Rest Framework-认证组件,权限组件 知识点回顾choices,on_delete

    一 小知识点回顾 #orm class UserInfo (models.Model): id = models.AutoField (primary_key=True) name = models. ...

随机推荐

  1. C#异步:AsyncCallback和IAsyncResult

    在线程池异步的执行委托,异步编程模型 msdn官方解释:https://msdn.microsoft.com/zh-cn/library/ms228972(VS.80).aspx 使用AsyncCal ...

  2. JDK 13 的 12 个新特性,真心涨姿势了

    作者:木九天 my.oschina.net/mdxlcj/blog/3107021 1.switch优化更新 JDK11以及之前的版本: switch (day) { case MONDAY: cas ...

  3. Java学习day4 程序流程控制一

    一.分支结构 条件语句:if...else if语句: 一个 if 语句包含一个布尔表达式和一条或多条语句,如果布尔表达式的值为 true,则执行 if 语句中的代码块,否则执行 if 语句块后面的代 ...

  4. 简单易用的leetcode开发测试工具(npm)

    描述 最近在用es6解leetcode,当问题比较复杂时,有可能修正了新的错误,却影响了前面的流程.要用通用的测试工具,却又有杀鸡用牛刀的感觉,所以就写了个简单易用的leetcode开发测试工具,分享 ...

  5. JS相比TS的缺点(或TS的优点)

    JS只有在运行时,才会抛出错误, JS里有任何的拼写错误 都不会提示错误 JS运行时报的错,指向也未必是错误的源头,也就是说:A类里因为书写代码有误,会造成运行时其他的类报错如B JS无法做到不同pa ...

  6. 1897. tank 坦克游戏

    传送门 显然考虑 $dp$,发现时间只和当前位置和攻击次数有关,设 $F[i][j][k]$ 表示当前位置为 $i,j$ ,攻击了 $k$ 次得到的最大分数 初始 $f[1][1][k]$ 为位置 $ ...

  7. vue路由守卫配合权限,白名单

    router.beforeEach(async(to, from, next) => { // 进度条开始 NProgress.start() // 确认用户是否已登录(获取它的token值,这 ...

  8. 使用Nginx代理和转发Websocket连接

    1.Websocket 简介 WebSocket协议是基于TCP的一种新的网络协议.它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端. 2.Nginx 简介 ...

  9. web页面和本地数据对比问题

    缘起 最近工作上出现了遇到了几个类似的问题:页面上有值,excel里有值,需要比较二者是否一致.小麻烦有:1.对于页面上的值,有时是页面表格里的一列或几列,无法直接勾选并复制出来.即便复制出来,也很不 ...

  10. 获取用户真实IP:(模拟:客户端--F5--nginx--tomcat 后端获取用户真实IP)

    模拟:客户端--F5--nginx--tomcat 后端获取用户真实IP 192.168.109.137 :nginx01(充当第一层代理==F5)192.168.109.138 :nginx02(二 ...