比方说这个读取缓冲区的数据,就有很多种方法。相对于TTcpClient的几种方法来说,TIdTCPClient确实提供了多种选择,不仔细研究真的容易糊涂(其实我比较喜欢用CurrentReadBuffer):
  
  1、ReadFromStack
  原型:function ReadFromStack(const ARaiseExceptionIfDisconnected: boolean; const ATimeout: integer; const AUseBuffer: boolean; ADestStream: TIdBuffer): integer; virtual;
  用于判断缓冲区里是否还有数据可读,返回值:Integer - Number of bytes read.
  
  2、CurrentReadBuffer
  原型:function CurrentReadBuffer: string;
  用于读取Socket数据到缓冲区,注意返回为String类型,如果直接显示该String的数据,对于\0之后的数据可能看不到,因此要读取所有的数据,还必须利用CurrentReadBufferSize()判断该String的长度。
  返回值:String - Contents of the Indy buffer.
  
  3、GetResponse
  原型:function GetResponse(const AAllowedResponses: Array of SmallInt): SmallInt; virtual;
  对于简单的命令应答可以使用这个方法获取应答消息,返回值:SmallInt - The numeric response number.
  
  4、ReadBuffer
  原型:procedure ReadBuffer(var ABuffer; const AByteCount: Longint);
  读取指定数目的字节到缓冲区ABuffer,注意它会调用 ReadFromStack 以检查缓冲区里的数据是否少于AByteCount
  
  5、ReadInteger
  原型:function ReadInteger(const AConvert: boolean): Integer;
  从缓冲区中读取整型数据,它会调用ReadBuffer
  
  6、ReadLn
  原型:function ReadLn(const ATerminator: string; const ATimeout: integer): string; virtual;
  读取移行记录,带有一个TimeOut属性,以防止在读不到新行时死循环。返回值:String - Line read from the buffer.
  注意行分隔符可能是以下几种:
  #0 - Default Line Feed (#10)
  LF - Line Feed (#10)
  CR - Carriage Return (#13)
  EOL - End-of-line (Carriage Return + Line Feed)
  
  7、ReadLnWait:
  原型:function ReadLnWait: string;
  很像ReadLn,但它会一直傻傻的等待
  
  8、ReadSmallInt
  原型:function ReadSmallInt(const AConvert: boolean): SmallInt;
  
  9、ReadStream
  原型:procedure ReadStream(AStream: TStream; AByteCount: LongInt; const AReadUntilDisconnect: boolean);
  
  10、ReadString
  原型:function ReadString(const ABytes: integer): string;
  与CurrentReadBuffer的不同在于它读取指定长度的字符串   

procedure TReadThread.Execute;
  var i:integer;
  s:string;
  begin
  try
  while (Terminated=false) and (IdTCPClient1.Connected=true) do
  begin
  i:=IdTCPClient1.ReadFromStack(); //检查是否需要读取数据
  if i>0 then
  begin
  s:=IdTCPClient1.ReadString(i);//读取数据
  end;
  SleepEx(100,true);
  end; //loop
  except
  end;
  end;

出处:http://blog.nnsky.com/blog_view_17131.html

转载于:https://www.cnblogs.com/Handll/archive/2009/07/27/1531964.html

Indy相关函数用法相关推荐

  1. matlab中采样函数,matlab采样相关函数用法详解

    matlab采样函数(降采样,过采样,减采样函数)用法详解 dyaddown 功能:对时间序列进行二元采样,每隔一个元素提取一个元素,得到一个降采样时间序列. 格式: 1.y = dyaddown(x ...

  2. Linux tm time_t timeval timespec以及与时间相关函数用法

    一.时间类型 linux中编程通常需要用到时间变量,和相关的时间操作函数.常用的时间类型有: time_t .struct  timeval.struct   timespec.struct   tm ...

  3. 【c++】14.编译proto和proto相关用法

    编译proto和proto相关用法 关于proto相关的知识可以参考系列博客 https://blog.csdn.net/daaikuaichuan/category_9869251.html [xx ...

  4. 【MATLAB】matlab 文档使用 ( 文档查询 | 文档层次 | 自带搜索工具 | 帮助命令 | 学习导引 )

    文章目录 一.matlab 文档查询 二.matlab 文档层次 三.matlab 自带搜索工具 四.matlab 帮助命令 五.matlab 学习导引 一.matlab 文档查询 如果想要使用 co ...

  5. dataframe列互换 python_统计学原理之python数据分析基础

    本篇内容关键词:python基础.数据分析.pandas.描述统计.matlibplot.seaborn.可视化分析 文章架构 1.python基础 1.1 python简介 都说python是门胶水 ...

  6. 用matlab怎么画频率特性,(matlab)频率特性仿真.pdf

    (matlab)频率特性仿真 频率特性仿真 主要内容 – MATLAB频率分析的相关函数 – MATLAB频率分析实例 – MATLAB频率校正方法 * 一.MATLAB频率分析的相关函数 表1 频域 ...

  7. Python菜鸟学习手册14----标准库+代码实例

    Python Standard Library 翻译: Python 江湖群 10/06/07 20:10:08 编译 0.1. 关于本书 0.2. 代码约定 0.3. 关于例子 0.4. 如何联系我 ...

  8. IO进程——系统IO与文件IO

    IO进程--系统IO与文件IO 在应用开发过程中会经常需要访问文件.Linux下读写文件的方式有两大类:标准IO和文件IO.本次就来讲一讲文件IO和标准IO,以及两者的区别. 一.文件IO 在Linu ...

  9. php八进制十六进制,php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码...

    十进制转换为二进制.八进制.十六进制 从十进制向其它进制转换,用的是就用该数字不断除以要转换的进制数,读取余数.连接一起就可以了. 复制代码代码如下: /** *十进制转二进制.八进制.十六进制不足位 ...

  10. HarmonyOS实战 —基于hi3861芯片鸿蒙2.0的避坑指南

    HarmonyOS实战 -基于hi3861芯片鸿蒙2.0的避坑指南 特别说明:本文章与卡片开发无关,想看卡片开发的不用往下读了 最近学习鸿蒙设备开发的过程中遇到了很多问题,因为目前几乎所有设备开发教程 ...

最新文章

  1. 过滤一批数据_手把手教你学numpy,从此数据处理不再慌【三】
  2. Canny边缘检测算法原理及其VC实现详解(二)
  3. 基于Java聊天系统设计(含源文件)
  4. 编程猫海龟编辑器python_海龟编辑器下载
  5. 在Linux环境下,将Solr部署到tomcat7中,导入Mysql数据库数据, 定时更新索引
  6. python3--环境搭建说明;
  7. 【LaTeX入门】15 在文章中添加脚注
  8. python的注释符号有哪些_python注释符号
  9. 面试官问:你在项目中做过哪些安全防范措施?
  10. Tinkpad笔记本双击开发Q盘不再提示创建恢复介质的对话框了,而且进入磁盘后文件夹是空的!
  11. 包容普通的父亲和母亲
  12. 使用ipv6内网穿透,实现私有云盘搭建,实现远程控制等功能
  13. K8S 数据卷volumes之Secret
  14. HouseRobber II
  15. FPGA从零设计[1]——关于Altera FPGA的下载器接口
  16. 递归之小球不稳定膨胀问题Erratic Expansion
  17. js中fn()和fn()()的区别
  18. [海思]--Hi3516a--添加新Sensor
  19. java paho_Java Eclipse Paho实现-自动重新连接
  20. CentOs 7.4下使用Docker容器搭建Elasticsearch集群

热门文章

  1. 浮点型数据在内存中是如何存储的
  2. Golang优秀开源项目汇总
  3. Google Go 语言从入门到应用必备开源项目
  4. vbs进阶——常用函数之inputbox篇(末尾有彩蛋)
  5. IBM服务器raid5崩溃数据恢复方法
  6. ACM一年总结(写于2011年11月18日)
  7. 计算机安装程序的文件名一般是什么,[电脑基础知识]什么是文件的后缀名.doc
  8. 三款适用于企业建站的CMS建站系统
  9. 自动化测试 (二) 连连看外挂
  10. webpack压缩图片