转发地址:http://blog.csdn.net/cowcga/article/details/6198382

关于TIdTCPClient的几种方法 收藏 其实Indy比较简单,但是可以提供的方法太多了。我找了很久,才搞明白。

比方说这个读取缓冲区的数据,就有很多种方法。相对于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的不同在于它读取指定长度的字符串 IdTCPClient和IdTCPServer主要属性 2008-10-13 12:40 IdTCPClient属性 1 : IOHandler 如果有相应的输入/输出操作,那么IOHandler相对应的组件或 接口将提供一个虚拟/抽象的输入/输出接口给相应的网络连接 2 : Intercept 如果有一个网络连接正在使用,那么Intercept 提供的组件或接 口将可以拦截相应的网络数据流中的数据 3 : BoundIP 指定使用IdTCPClient组件的计算机系统的IP地址,也就是说,其 中是空白那么什么样的计算机都可以使用,但如果指定的IP地址为239.126.12.2,那么 就只有IP地址为239.126.12.2的计算机可以使用它. 4 : BoundPor 网络端口的概念,指定使用IdTCPClient组件的计算机系统网络 端口,也就是说,如果BoundPort中指定了以整数为端口的网络端口,那么通讯时就只能 使用这个商品进行通讯 5 : Host 如果不是使用BoundIP中的地址起先通讯,那么Host就是诣将 要通讯的计算机系统的名称或它的IP地址,可以是计算机名也可以是IP地址. 6 : Port 与BoundPort的概念是基本一样的,只是它与HOst相配合来决 定IdTCPClient组件要与哪一个计算机系统中的什么样的网络通讯端口进行通讯 方法 IdTCPClient 主要使 用Write,WriteBuffer,WriteCardinal,WriteFile,WriteHeader,WriteInteger,WriteL n,WriteRFCReply,WriteRFCStrings,WriteSmallInt,WriteStream,WriteStrings. 通过它们 IdTCPClient 可以发送非常多的类型的数据到相应的服务端,而这些都是非 常的简单 如: Write的函数说明是: procedure Write(Const Aout : String) ; Virtual; 它的目的很简单,就是发送一个字符串到相应的服务端.其中Aout就是被发送的字符串. 而 WriteLn的函数说明是: procedure WriteLn(Const Aout : String = ''); Virtual; 它的目的就是在Write的基础上,在被发送的字符串后加入相应的回车控件符. 注意 : 虽然IdTCPClient可以直接使用,它不可以被单独的使用,它必须与相应 的IdTCPServer组件相配合才能发挥特定的作用,当然,如果相应的网络系统中具有这 样的TCP服务器应用,那么IdTCPClient也可以直接与它们进行通讯. IdTCPServer 属性 1 : Bindings 包括了相应的服务端所允许的所有的Socket(套接字)的相关信 息,比如它们的IP地址和端口号 2 : ListenQueue 是规定在服务端失效之前最多可以允许的监听网络连接的纯种 数目.默认情况下它的值是15,但这个值可以根据自己的需要和系统的最大承受能力来 进行改变 3 : MaxConnects 它表示的内容就是服务端可以承载的最大的网络连接数目,如果 它的值是0,那么就表明它没有最大的限制值,可以使用任意数目的连接. 4 : MaxConnectionReply 与MaxConnects相配合,当连接数目大 于MaxConnects的数目时,它将返回一个错误的信息,而这个信息是由TIdRFCReply 类所定义的 5 : ThreadMgr 就是使用相应的 ThreadMgr 组件来对于网络连接线程进行管 理.

转载于:https://www.cnblogs.com/LittleTiger/p/3944465.html

TIdTCPClient 详解相关推荐

  1. 从命令行到IDE,版本管理工具Git详解(远程仓库创建+命令行讲解+IDEA集成使用)

    首先,Git已经并不只是GitHub,而是所有基于Git的平台,只要在你的电脑上面下载了Git,你就可以通过Git去管理"基于Git的平台"上的代码,常用的平台有GitHub.Gi ...

  2. JVM年轻代,老年代,永久代详解​​​​​​​

    秉承不重复造轮子的原则,查看印象笔记分享连接↓↓↓↓ 传送门:JVM年轻代,老年代,永久代详解 速读摘要 最近被问到了这个问题,解释的不是很清晰,有一些概念略微模糊,在此进行整理和记录,分享给大家.在 ...

  3. docker常用命令详解

    docker常用命令详解 本文只记录docker命令在大部分情境下的使用,如果想了解每一个选项的细节,请参考官方文档,这里只作为自己以后的备忘记录下来. 根据自己的理解,总的来说分为以下几种: Doc ...

  4. 通俗易懂word2vec详解词嵌入-深度学习

    https://blog.csdn.net/just_so_so_fnc/article/details/103304995 skip-gram 原理没看完 https://blog.csdn.net ...

  5. 深度学习优化函数详解(5)-- Nesterov accelerated gradient (NAG) 优化算法

    深度学习优化函数详解系列目录 深度学习优化函数详解(0)– 线性回归问题 深度学习优化函数详解(1)– Gradient Descent 梯度下降法 深度学习优化函数详解(2)– SGD 随机梯度下降 ...

  6. CUDA之nvidia-smi命令详解---gpu

    nvidia-smi是用来查看GPU使用情况的.我常用这个命令判断哪几块GPU空闲,但是最近的GPU使用状态让我很困惑,于是把nvidia-smi命令显示的GPU使用表中各个内容的具体含义解释一下. ...

  7. Bert代码详解(一)重点详细

    这是bert的pytorch版本(与tensorflow一样的,这个更简单些,这个看懂了,tf也能看懂),地址:https://github.com/huggingface/pytorch-pretr ...

  8. CRF(条件随机场)与Viterbi(维特比)算法原理详解

    摘自:https://mp.weixin.qq.com/s/GXbFxlExDtjtQe-OPwfokA https://www.cnblogs.com/zhibei/p/9391014.html C ...

  9. pytorch nn.LSTM()参数详解

    输入数据格式: input(seq_len, batch, input_size) h0(num_layers * num_directions, batch, hidden_size) c0(num ...

  10. Java集合详解之Map

    一.首先看看集合框架体系图 从图中可以看到,Map接口扩展了Iterator接口,关于Iterator接口详解请移步:Iterator接口详解 二.Map是什么? Map<k,v>使用键值 ...

最新文章

  1. java httpclient访问webservice_java通过HttpClient方式和HttpURLConnection方式调用WebService接口...
  2. python【蓝桥杯vip练习题库】 ADV-364 天天向上(DP)
  3. 用python排序算法_Python - 八大排序算法
  4. js保留两位小数的函数_使用率低但功能强大的6个Excel函数公式应用技巧解读!...
  5. Cheatsheet: 2011 09.13 ~ 09.19
  6. php伪静态不支持中文,Discuz开启伪静态导致中文会员使用手机无法访问的解决方法...
  7. MySQL判断字符串是否是数字
  8. 9.linux ntp服务器搭建
  9. 小米pro15拆机_15.6寸小米笔记本Pro拆后盖加装扩展硬盘图文记录
  10. python游戏计分代码_Python笔试题之设计“跳一跳”小游戏计分器
  11. 综合评价之熵值法+TOPSIS
  12. 柔性上肢康复机器人研究中的VR技术
  13. 数字图像处理:4.色彩空间转换
  14. 地理数据库GeoNames,并导入Mysql
  15. 第十二,十三周第12个容器架构
  16. OA电子表单设计-年假申请单-数据验证
  17. python中查找文件当前位置_如何查找当前目录和文件目录
  18. Informatica元数据库解析
  19. 小型电子商务网站设计原则
  20. mysql数据库备份和倒库操作

热门文章

  1. 坚持写技术博客一年能有多少收获!
  2. android usb 读写权限,Android默认给予USB读写权限,去掉受权对话框
  3. 台式计算机把硬盘换了怎么进系统,联想台式机怎么进bios设置硬盘启动
  4. PassMark 更新排行,苹果 M1 杀疯了
  5. 苹果10月23日或发布iPad mini
  6. HDU-4747 Mex
  7. iOS 强制横屏的方法
  8. ubuntu 18.04快捷显示桌面
  9. 4芯网线接法(电话线接网线水晶头)
  10. 美国佐治亚理工计算机专业,世界大学排名之:美国佐治亚理工学院