关于TIdTCPClient的几种方法
關(guān)于TIdTCPClient的幾種方法 收藏?
其實(shí)Indy比較簡單,但是可以提供的方法太多了。我找了很久,才搞明白。
比方說這個(gè)讀取緩沖區(qū)的數(shù)據(jù),就有很多種方法。相對于TTcpClient的幾種方法來說,TIdTCPClient確實(shí)提供了多種選擇,不仔細(xì)研究真的容易糊涂(其實(shí)我比較喜歡用CurrentReadBuffer):
1、ReadFromStack?
原型:function ReadFromStack(const ARaiseExceptionIfDisconnected: boolean; const ATimeout: integer; const AUseBuffer: boolean; ADestStream: TIdBuffer): integer; virtual;?
用于判斷緩沖區(qū)里是否還有數(shù)據(jù)可讀,返回值:Integer - Number of bytes read.
2、CurrentReadBuffer?
原型:function CurrentReadBuffer: string;?
用于讀取Socket數(shù)據(jù)到緩沖區(qū),注意返回為String類型,如果直接顯示該String的數(shù)據(jù),對于/0之后的數(shù)據(jù)可能看不到,因此要讀取所有的數(shù)據(jù),還必須利用CurrentReadBufferSize()判斷該String的長度。?
返回值:String - Contents of the Indy buffer.
3、GetResponse?
原型:function GetResponse(const AAllowedResponses: Array of SmallInt): SmallInt; virtual;?
對于簡單的命令應(yīng)答可以使用這個(gè)方法獲取應(yīng)答消息,返回值:SmallInt - The numeric response number.
4、ReadBuffer?
原型:procedure ReadBuffer(var ABuffer; const AByteCount: Longint);?
讀取指定數(shù)目的字節(jié)到緩沖區(qū)ABuffer,注意它會(huì)調(diào)用 ReadFromStack 以檢查緩沖區(qū)里的數(shù)據(jù)是否少于AByteCount
5、ReadInteger?
原型:function ReadInteger(const AConvert: boolean): Integer;?
從緩沖區(qū)中讀取整型數(shù)據(jù),它會(huì)調(diào)用ReadBuffer
6、ReadLn?
原型:function ReadLn(const ATerminator: string; const ATimeout: integer): string; virtual;?
讀取移行記錄,帶有一個(gè)TimeOut屬性,以防止在讀不到新行時(shí)死循環(huán)。返回值: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,但它會(huì)一直傻傻的等待
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 如果有相應(yīng)的輸入/輸出操作,那么IOHandler相對應(yīng)的組件或
接口將提供一個(gè)虛擬/抽象的輸入/輸出接口給相應(yīng)的網(wǎng)絡(luò)連接
2 : Intercept 如果有一個(gè)網(wǎng)絡(luò)連接正在使用,那么Intercept 提供的組件或接
口將可以攔截相應(yīng)的網(wǎng)絡(luò)數(shù)據(jù)流中的數(shù)據(jù)
3 : BoundIP 指定使用IdTCPClient組件的計(jì)算機(jī)系統(tǒng)的IP地址,也就是說,其
中是空白那么什么樣的計(jì)算機(jī)都可以使用,但如果指定的IP地址為239.126.12.2,那么
就只有IP地址為239.126.12.2的計(jì)算機(jī)可以使用它.
4 : BoundPor 網(wǎng)絡(luò)端口的概念,指定使用IdTCPClient組件的計(jì)算機(jī)系統(tǒng)網(wǎng)絡(luò)
端口,也就是說,如果BoundPort中指定了以整數(shù)為端口的網(wǎng)絡(luò)端口,那么通訊時(shí)就只能
使用這個(gè)商品進(jìn)行通訊
5 : Host 如果不是使用BoundIP中的地址起先通訊,那么Host就是詣將
要通訊的計(jì)算機(jī)系統(tǒng)的名稱或它的IP地址,可以是計(jì)算機(jī)名也可以是IP地址.
6 : Port 與BoundPort的概念是基本一樣的,只是它與HOst相配合來決
定IdTCPClient組件要與哪一個(gè)計(jì)算機(jī)系統(tǒng)中的什么樣的網(wǎng)絡(luò)通訊端口進(jìn)行通訊
方法
IdTCPClient 主要使
用Write,WriteBuffer,WriteCardinal,WriteFile,WriteHeader,WriteInteger,WriteL
n,WriteRFCReply,WriteRFCStrings,WriteSmallInt,WriteStream,WriteStrings.
通過它們 IdTCPClient 可以發(fā)送非常多的類型的數(shù)據(jù)到相應(yīng)的服務(wù)端,而這些都是非
常的簡單
如: Write的函數(shù)說明是:
procedure Write(Const Aout : String) ; Virtual;
它的目的很簡單,就是發(fā)送一個(gè)字符串到相應(yīng)的服務(wù)端.其中Aout就是被發(fā)送的字符串.
而 WriteLn的函數(shù)說明是:?
procedure WriteLn(Const Aout : String = ''); Virtual;
它的目的就是在Write的基礎(chǔ)上,在被發(fā)送的字符串后加入相應(yīng)的回車控件符.
注意 : 雖然IdTCPClient可以直接使用,它不可以被單獨(dú)的使用,它必須與相應(yīng)
的IdTCPServer組件相配合才能發(fā)揮特定的作用,當(dāng)然,如果相應(yīng)的網(wǎng)絡(luò)系統(tǒng)中具有這
樣的TCP服務(wù)器應(yīng)用,那么IdTCPClient也可以直接與它們進(jìn)行通訊.
IdTCPServer?
屬性
1 : Bindings 包括了相應(yīng)的服務(wù)端所允許的所有的Socket(套接字)的相關(guān)信
息,比如它們的IP地址和端口號
2 : ListenQueue 是規(guī)定在服務(wù)端失效之前最多可以允許的監(jiān)聽網(wǎng)絡(luò)連接的純種
數(shù)目.默認(rèn)情況下它的值是15,但這個(gè)值可以根據(jù)自己的需要和系統(tǒng)的最大承受能力來
進(jìn)行改變
3 : MaxConnects 它表示的內(nèi)容就是服務(wù)端可以承載的最大的網(wǎng)絡(luò)連接數(shù)目,如果
它的值是0,那么就表明它沒有最大的限制值,可以使用任意數(shù)目的連接.
4 : MaxConnectionReply 與MaxConnects相配合,當(dāng)連接數(shù)目大
于MaxConnects的數(shù)目時(shí),它將返回一個(gè)錯(cuò)誤的信息,而這個(gè)信息是由TIdRFCReply
類所定義的
5 : ThreadMgr 就是使用相應(yīng)的 ThreadMgr 組件來對于網(wǎng)絡(luò)連接線程進(jìn)行管
理.
總結(jié)
以上是生活随笔為你收集整理的关于TIdTCPClient的几种方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 清理服务器系统日志,win2008服务器
- 下一篇: JAVA权重计算(根据自己理解计算的,不