由于TCP/IP消息包是一个流的概念,每条消息前提供4个字节表示消息包长度值。
消息包长度为XML报文长度,长度值用16进制字符(0-F)表示的4位整数来表示。消息长度取值范围为0到65000(0000-FDE8)。
每次接收时,先接收4个字节的长度,用于确定消息包的长度,再按长度接收其后消息,发送时要在消息包前边加载4个字节的长度值再与消息一起发送。
通信软件接口采用长连接方式,即客户端与服务器端建立连接后,客户端通过该连接向服务器端发送多个接口请求,在没有请求时,不中断连接,需要定时向服务器端发送心跳信息(暂定心跳间隔120秒)。在连接中断时,服务器端能保持在指定端口的侦听,由客户端自动发送重新连接申请并建立到服务器端的连接。
大家帮忙分析一下是用serversocket控件来做还是idTCPserver控件来做,
谁有读取xml消息包的简单例子吗
消息包长度为XML报文长度,长度值用16进制字符(0-F)表示的4位整数来表示。消息长度取值范围为0到65000(0000-FDE8)。
每次接收时,先接收4个字节的长度,用于确定消息包的长度,再按长度接收其后消息,发送时要在消息包前边加载4个字节的长度值再与消息一起发送。
通信软件接口采用长连接方式,即客户端与服务器端建立连接后,客户端通过该连接向服务器端发送多个接口请求,在没有请求时,不中断连接,需要定时向服务器端发送心跳信息(暂定心跳间隔120秒)。在连接中断时,服务器端能保持在指定端口的侦听,由客户端自动发送重新连接申请并建立到服务器端的连接。
大家帮忙分析一下是用serversocket控件来做还是idTCPserver控件来做,
谁有读取xml消息包的简单例子吗
SData:string;
IdTCPClient1.ReadBuffer(LData , 4);
IdTCPClient1.ReadBuffer(SData, LData);
开发协议说了是用XML报文,是不是可以用字符串来接收,我在DEMO中看到很多XML的例子,但都是基于读取xml文档的,应该与我这个不一样吧
doc.LoadFromStream(收到的数据)