我想通过IdTCPClient读取从服务器发来的TCP/IP消息包,消息包长度为XML报文长度,规定每次接收时,先接收4个字节的长度,再按长度接收其后消息,我不大懂,请问是用数组的格式来接收吗,
像下面这样吗,如何分两次接收
IdTCPClient1.ReadLn('', 5);
像下面这样吗,如何分两次接收
IdTCPClient1.ReadLn('', 5);
解决方案 »
- DELPHI7+ADO+SQL2000用Inno Setup做安装程序如何配置数据库连接
- 请问﹕当前月最后一天的日期该怎么获取﹖谢高手指点﹗
- delphi里有没有与VC里的time_c等价的函数?
- 第三方控件的问题(急急!)
- 说简单吧,但确的也会难倒人
- 郁闷中。。。。。拜托了,各位大虾。
- 请问怎么才能对StringGrid控件直接写入数据呢?
- 为什么SET IDENTITY_INSERT [RMTSVR].[RMTDB].[RMTUSER].[RMTTable] ON不成功
- 为什么电脑游戏和专用游戏机的差距这么大?
- FileStream.ReadBuffer(Str,n)出错!
- 遇到一个问题,从自己做的form继续新的页面,在上面添加控件,但运行时看不到的,怎么回事?
- 关于动态生成Panel的几个问题?
IdTCPClient1.ReadBuffer(Length , 4);
IdTCPClient1.ReadBuffer(Data, Length);
长度值用16进制字符(0-F)表示的4位整数来表示,
是不是还要做什么转换
因为SizeOf(数据)是integer,所以要转成integer来接收后面的数据
http://community.csdn.net/Expert/topic/3859/3859478.xml?temp=.5940515
我写的发送代码,接收可以这样
发送用:
IdTCPClient1.WriteInteger(iValue);
IdTCPClient1.WriteLn(edMessage.Text);
对应:
IdTcpClient.ReadInteger;
IdTcpClient.ReadLn;
/////////////////////////////////////////////////////
发送用:
IdTcpClient.WriteBuffer
对应:
Length:integer;
Data:Array of char;
IdTcpClient.ReadBuffer(Length,4);
SetLength(Data,Length);
IdTcpClient.ReadBuffer(Data,Length);