其實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元件的計算機系統網路
使用這個商品進行通訊
5 : host 如果不是使用boundip中的位址起先通訊,那麼host就是詣將
要通訊的計算機系統的名稱或它的ip位址,可以是計算機名也可以是ip位址.
6 : port 與boundport的概念是基本一樣的,只是它與host相配合來決
方法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 元件來對於網路連線執行緒進行管
理.
mysql幾種索引 mysql的幾種索引
為什麼建立索引後,速度就會變快?答 使用索引後,查詢是按二叉樹演算法來查詢到記錄 索引使用的注意事項 索引的代價 1.占用磁碟空間 2.對dml 新增 修改 刪除 操作有影響,變慢 在哪些列上適合新增索引 1.較頻繁的作為查詢條件字段應該建立索引 select from emp where empn...
mysql幾種語言 mysql的幾種SQL語句
一 資料查詢語言 dql dql全稱 data query language,作用是從表中獲取資料,用的最多的關鍵字是select,保留字有where order by group by等 1 select user,host from mysql.user select user,host fro...
Cocos Creator Debug的幾種方式
不知道有沒有同學文件還沒看完的就去折騰了?反正我就是,導致在坑里待了幾個小時。下了乙個最新版的creator v1.9.1 之前做過creator專案,隨之下了個vscode。然後就vscode工作流走一走,準備看看debug的時候才發現怎麼都搞不定了 把creator的幾種debug方式搬過來給大...