TIdTCPClient 详解
轉發地址: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 详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 渗透测试-伪装隐藏与清理痕迹手段
- 下一篇: No way to dispatch t