Indy10 Tcp接收数据问题

Posted 十一月_寒风

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Indy10 Tcp接收数据问题相关的知识,希望对你有一定的参考价值。

在做Delphi开发时,使用Indy组件来做网络通讯是一种比较快捷的方式。今天要说一下indy10中tcp接收数据的问题。

我们在测试时经常使用Wrinteln来发送数据,用Readln来接收数据。用这个两个函数来测试Server端和Client端的通讯

是否正常。但在实际使用中我们很多时候发送的数据包都是比较复杂的,并不会带有回车键。也有可能用来接收XML报文,

在报文中是可能包含多次的回车键的。这种情况下显然没有办法用ReadLn来处理。

我们可以用以下方法来接收数据:

procedure TForm1.Button1Click(Sender: TObject);
var
xml:string;
buf:TIdBytes;
begin
if IdTCPClient1.Socket.Readable() then
begin
IdTCPClient1.Socket.ReadBytes(buf,-1);  //第二个参数使用-1表示接收所有长度。因为我们并不知道要接收的数据到底有多长
xml:=BytesToString(buf);
end;
end;

以上是关于Indy10 Tcp接收数据问题的主要内容,如果未能解决你的问题,请参考以下文章

delphi indy10 无法接收中文

Indy TCP 客户端示例?

Delphi XE IdTCPClient1 和 IdTCPServer1 数据的发送与接收(indy10)

关于XE10下Indy发送字符串编码的问题

多部分/表单数据请求的 Indy MIME 解码返回尾随 CR/LF

delphi2009(10,xe)下indy10发送utf8字符串