日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TidTcpClient总结

發布時間:2023/12/18 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TidTcpClient总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

TidTcpClient包裝了一個完整的TCP客戶端,該客戶端包括sock支持。該控件是以下客戶端控件的父類:

TIdDayTime, TIdEcho, TIdFinger, TIdFTP, TIdGopher, TIdHTTP, TIdNNTP, TIdPOP3, TIdQUOTD,

TIdSMTP, TIdTelnet, and TIdWhois。

屬性
property BoundIP: string;
客戶端使用的IP地址。

property BoundPort: Integer;
當前連接的本地端口號。

property BoundPortMax: Integer;
當前連接時可以使用的最大本地端口號。

property BoundPortMin: Integer;
當前連接可以使用的最小本地端口號。

property Host: string;
遠程主機名。可以是IP地址,也可以是域名。

property Port: integer;
遠程主機端口號。

property Intercept: TIdConnectionIntercept;
對連接進行讀寫操作時插入的中途截取者(插件)。

property IOHandler: TIdIOHandler;
發送和接受數據時的輸入輸出源(插件)。

property MaxLineAction: TIdMaxLineAction;
當讀數據時已經到了最大緩沖區長度時觸發的動作(事件處理器)。

property MaxLineLength: Integer;
讀取數據時最大緩沖區長度(字節數)。

property ReadTimeout: Integer;
讀取數據時的超時事件,單位毫秒。

property Socket: TIdIOHandlerSocket;
連接時所用的socket。

方法
procedure Connect(const ATimeout: Integer = IdTimeoutDefault); virtual;
打開客戶端連接。

function ConnectAndGetAll: string; virtual;
打開客戶端連接并獲取所有的數據。

function AllData: string; virtual;
得到連接中所有的數據。

procedure CancelWriteBuffer;
停止寫入數據。

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;
將連接中的數據讀取到特殊的對象中去。

procedure CheckForDisconnect(const ARaiseExceptionIfDisconnected: boolean = true;
const AIgnoreBuffer: boolean = false); virtual;
決定是否關閉連接。

procedure CheckForGracefulDisconnect(const ARaiseExceptionIfDisconnected: Boolean = True);

virtual;
決定是否正常地關閉連接。
function CheckResponse(const AResponse: SmallInt; const AAllowedResponses: array
of SmallInt): SmallInt; virtual;
檢查允許的響應中的合法的響應。

procedure ClearWriteBuffer;
清除寫緩沖區。

procedure CloseWriteBuffer;
關閉寫緩沖區。

function Connected: Boolean; virtual;
當前連接是否可用。

function CurrentReadBuffer: string;
從協議棧中更新緩沖區。

procedure Disconnect; virtual;
關閉連接。

procedure FlushWriteBuffer(const AByteCount: Integer = -1);
寫入緩存的數據,并清除寫緩沖區。

procedure ReadBuffer(var ABuffer; const AByteCount: Longint);
從讀取緩沖區中讀取數據。

procedure Write(const AOut: string); virtual;
向連接寫入數據。

procedure WriteBuffer(const ABuffer; AByteCount: Longint; const AWriteNow: Boolean = False);
向當前連接寫入緩沖數據。

procedure WriteStream(AStream: TStream; const AAll: Boolean = True; const AWriteByteCount:

Boolean = False; const ASize: Integer = 0); virtual;
向當前連接寫入流數據。

procedure ReadStream(AStream: TStream; AByteCount: LongInt = -1; const AReadUntilDisconnect:

boolean = false);
從當前連接中讀取流數據

?

TIdTCPClient的幾種方法

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 組件來對于網絡連接線程進行管
理.

總結

以上是生活随笔為你收集整理的TidTcpClient总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。