TidTcpClient总结
TidTcpClient包裝了一個(gè)完整的TCP客戶端,該客戶端包括sock支持。該控件是以下客戶端控件的父類:
TIdDayTime, TIdEcho, TIdFinger, TIdFTP, TIdGopher, TIdHTTP, TIdNNTP, TIdPOP3, TIdQUOTD,
TIdSMTP, TIdTelnet, and TIdWhois。
屬性
property BoundIP: string;
客戶端使用的IP地址。
property BoundPort: Integer;
當(dāng)前連接的本地端口號。
property BoundPortMax: Integer;
當(dāng)前連接時(shí)可以使用的最大本地端口號。
property BoundPortMin: Integer;
當(dāng)前連接可以使用的最小本地端口號。
property Host: string;
遠(yuǎn)程主機(jī)名。可以是IP地址,也可以是域名。
property Port: integer;
遠(yuǎn)程主機(jī)端口號。
property Intercept: TIdConnectionIntercept;
對連接進(jìn)行讀寫操作時(shí)插入的中途截取者(插件)。
property IOHandler: TIdIOHandler;
發(fā)送和接受數(shù)據(jù)時(shí)的輸入輸出源(插件)。
property MaxLineAction: TIdMaxLineAction;
當(dāng)讀數(shù)據(jù)時(shí)已經(jīng)到了最大緩沖區(qū)長度時(shí)觸發(fā)的動(dòng)作(事件處理器)。
property MaxLineLength: Integer;
讀取數(shù)據(jù)時(shí)最大緩沖區(qū)長度(字節(jié)數(shù))。
property ReadTimeout: Integer;
讀取數(shù)據(jù)時(shí)的超時(shí)事件,單位毫秒。
property Socket: TIdIOHandlerSocket;
連接時(shí)所用的socket。
方法
procedure Connect(const ATimeout: Integer = IdTimeoutDefault); virtual;
打開客戶端連接。
function ConnectAndGetAll: string; virtual;
打開客戶端連接并獲取所有的數(shù)據(jù)。
function AllData: string; virtual;
得到連接中所有的數(shù)據(jù)。
procedure CancelWriteBuffer;
停止寫入數(shù)據(jù)。
procedure Capture(ADest: TStream; const ADelim: string = '.'; const AIsRFCMessage: Boolean =
True); overload;
procedure Capture(ADest: TStream; out VLineCount: Integer; const ADelim: string = '.'; const
AIsRFCMessage: Boolean = True); overload;
procedure Capture(ADest: TStrings; const ADelim: string = '.'; const AIsRFCMessage: Boolean
= True); overload;
procedure Capture(ADest: TStrings; out VLineCount: Integer; const ADelim: string = '.';
const AIsRFCMessage: Boolean = True); overload;
將連接中的數(shù)據(jù)讀取到特殊的對象中去。
procedure CheckForDisconnect(const ARaiseExceptionIfDisconnected: boolean = true;
const AIgnoreBuffer: boolean = false); virtual;
決定是否關(guān)閉連接。
procedure CheckForGracefulDisconnect(const ARaiseExceptionIfDisconnected: Boolean = True);
virtual;
決定是否正常地關(guān)閉連接。
function CheckResponse(const AResponse: SmallInt; const AAllowedResponses: array
of SmallInt): SmallInt; virtual;
檢查允許的響應(yīng)中的合法的響應(yīng)。
procedure ClearWriteBuffer;
清除寫緩沖區(qū)。
procedure CloseWriteBuffer;
關(guān)閉寫緩沖區(qū)。
function Connected: Boolean; virtual;
當(dāng)前連接是否可用。
function CurrentReadBuffer: string;
從協(xié)議棧中更新緩沖區(qū)。
procedure Disconnect; virtual;
關(guān)閉連接。
procedure FlushWriteBuffer(const AByteCount: Integer = -1);
寫入緩存的數(shù)據(jù),并清除寫緩沖區(qū)。
procedure ReadBuffer(var ABuffer; const AByteCount: Longint);
從讀取緩沖區(qū)中讀取數(shù)據(jù)。
procedure Write(const AOut: string); virtual;
向連接寫入數(shù)據(jù)。
procedure WriteBuffer(const ABuffer; AByteCount: Longint; const AWriteNow: Boolean = False);
向當(dāng)前連接寫入緩沖數(shù)據(jù)。
procedure WriteStream(AStream: TStream; const AAll: Boolean = True; const AWriteByteCount:
Boolean = False; const ASize: Integer = 0); virtual;
向當(dāng)前連接寫入流數(shù)據(jù)。
procedure ReadStream(AStream: TStream; AByteCount: LongInt = -1; const AReadUntilDisconnect:
boolean = false);
從當(dāng)前連接中讀取流數(shù)據(jù)
?
TIdTCPClient的幾種方法
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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1:500城镇地形图测绘已正式启动
- 下一篇: 一步一步从原理跟我学邮件收取及发送 7.