indy c - s组件说明 联系客服

发布时间 : 星期五 文章indy c - s组件说明更新完毕开始阅读65759fd149649b6648d747f4

TidTCPClient, TidTCPServer 组件. 读缓冲区的方法. ReadFromStack

原型 function ReadFromStack (const ARaiseException If Disconnected: boolean;const Atimeout : Integer; const AUseBuffer:boolean; ADestStream:TidBuffer) : Integer;virtual;

用于判断缓冲区里是否还有数据可读,返回值 integer - number of bytes read. CurrentReadBuffer

原型 function CurrentReadBuffer : string ;

用于读取Socket 数据到缓冲区,注意返回为String类型,如果直接显示该

string的数据对于\\0之后的数据可能看不到 因此要读取所有的数据,还必须利用CurrentReadBuffersize()判断该String的长度.返回值string - Contents of the indy buffer. GetResPonse

原型: function GetResponse (const AAllowedResponses : Array of SmallInt) : SmallInt ; Virtual;

对于简单的命令应答可以使用这个方法获取应答消息,返回值 :SmallInt . ReadBuffer

原型 : procedure ReadBuffer (var ABuffer;const AbyteCount : Longint ); 读取指定数目的字节到缓冲区Abuffer,注意它会调用 ReadFromStack 以检查缓冲区里的数据是否少于AbyteCount; ReadLn

原型 function ReadLn(const ATerminator:string;const ATimeout : Integer):String;virtual;

读取移行记录,带有一个TIMEOUT属性,以防止在读不到新行时死循环, ReadStream

原型 :procedure ReadStream (Astream :TStream; AbyteCount :longint ;Const AReadUntilDisconnect :boolean) ;

主要属性:

1 IOHandler 如果有相应的输入输出操作那么IOHandler相对应的组件或接口将提供一个虚拟的输入输出接口给相应的网络连接.

2.Intercept 如果有一个网络连接正在使用那么Intercept提供的组件或接口将可以拦截相应的网络数据流中的数据.

3.BoundIp 指定使用IdTCPClient组件的计算机系统的IP地址,也就是说其中是空白那么什么样的计算机都可以使用,但如果指定的IP地址为239,126,12,2那么就只有IP地址为239.126.12.2的计算机可以使用它.

4. BoundPort 网络端口的概念指定使用IdTCPClient 组件的计算机系统网络端口也就是说如果BoundPort中指定了以整数为端口的网络端口,那么通讯时就只能使用这个端口进行通讯.

5.Host 如果不是使用Boundip中的地址起先通讯,那么host就是指将要通讯的计算机系统的名称或者它的IP地址,可以是计算机名也可以是IP地址. 6 port 与BoundPort 的概念是基本一样的.只是它与Host相配合来决定IdTCPClient组件要与哪一个计算机系统中的社么样的网络通讯端口来进行通讯. 主要方法

IdTCPClient 主要使用

Write,writeBuffer,WriteCardinal,WriteFile,WriteHeader,WriteInteger,WriteLn,WriteRFCReply,WriteRFCStrings WriteSmallInt,WriteStream,WriteStrings.

通过他们IdTCPClient可以发送非常多的类型的数据到相应的服务端而这些都是非常简单的.如write函数的说明是:porcedure 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组件来对于网络连接线程进行管理. 其他属性.

1. BoundIp 指定客户端连接使用的本地IP.

2.ASCIIFIter 指定连接收到的数据保存在缓冲区前是否将高字节位清除,转换为ASCII字符,若要将收到的数据以ASCII码形式存入缓存就应当设置该属性为TRUE

3.ReadLnTimedOut 只读属性,判断ReadLn方法是否超时. 4.LocalName 获取本机计算机名.

5. host 所要连接的远程计算机的IP地址或计算机名. 6.Port 指定客户端连接服务器所使用的端口号.

7.RecvBufferSize 指定连接所用的接收缓冲区的大小.默认为8192字节. 8 SendBufferSIze 指定连接所用的写缓冲区的最大字节,默认为32768字节 根据机器的性能改变数据的大小可提高传输的速度. 其他方法.

1 create 构造一个TidTcpClient对象. 2.Destroy 删除一个TidTCPClient对象.

3 ClearWriteBuffer 清除写缓冲区.

4.InputLn 从服务器读取一行数据.并返回该行数据,若指定AMask参数将返回该参数中的内容,则返回读取字符个数的AMask个字符串. 5.Connect 连接服务器.需要指定HOST和PORT

************************************************************ IdTcpClient Code

procedure TForm1.btn1Click(Sender: TObject); begin try

idtcpclnt1.Host := '127.0.0.1'; idtcpclnt1.Port := 9000;

idtcpclnt1.SendBufferSize := 4096; idtcpclnt1.ReadTimeout := 4096; idtcpclnt1.Connect(2000); except

stat1.Panels[0].Text := '服务器无法连接'; end; end;

procedure TForm1.idtcpclnt1Connected(Sender: TObject); begin

stat1.Panels[0].Text := '服务器连接成功'; btn2.Enabled := True; end;

procedure TForm1.btn2Click(Sender: TObject); var

SendBuf : TFileStream; Filename : String; begin

if (dlgOpen1.Execute) and (dlgOpen1.FileName <> '') then begin

Filename := dlgOpen1.FileName ;

SendBuf := TFileStream.Create(Filename,fmOpenRead); if (SendBuf <> nil ) then begin

if idtcpclnt1.Connected then begin try

idtcpclnt1.WriteLn(ExtractFileName(Filename));