采用TCP长连接,每个消息包含:1、二进制包头;2、包内容(xml格式)。
HeardFlag(int) Length(int) Sequence Ver Enc Rec
4 4 4 1 1 2
HeardFlag: 协议标识,固定为KSF$,4个字节。
Length: 消息长度,包头和包内容xml体的总长度,4个字节。
Sequence: 消息序号,4个字节。
Ver: 协议版本,1个字节,当前版本序号1。
Enc: 是否加密,1个字节,当前版本不加密0。
Rec: 保留字段,2个字节。下面是DELPHI结构体:
type
THeader = record
HeadFlag: array[0..3] of Char;
Length: array[0..3]of Byte;
Sequence: Integer;
Ver: Byte;
Enc: Byte ;
Rec: array[0..1] of byte;
end;
请教在发送时候如何赋值长度Length,最关键!
HeardFlag(int) Length(int) Sequence Ver Enc Rec
4 4 4 1 1 2
HeardFlag: 协议标识,固定为KSF$,4个字节。
Length: 消息长度,包头和包内容xml体的总长度,4个字节。
Sequence: 消息序号,4个字节。
Ver: 协议版本,1个字节,当前版本序号1。
Enc: 是否加密,1个字节,当前版本不加密0。
Rec: 保留字段,2个字节。下面是DELPHI结构体:
type
THeader = record
HeadFlag: array[0..3] of Char;
Length: array[0..3]of Byte;
Sequence: Integer;
Ver: Byte;
Enc: Byte ;
Rec: array[0..1] of byte;
end;
请教在发送时候如何赋值长度Length,最关键!
解决方案 »
- delphi 字符串分割的问题
- 很弱的问题:求两个时间之间相隔分钟数
- 急!!!swf加入资源文件后,怎样做到不释放到具体的目录,而直接调用(达到保护swf文件的目的)?
- 告别DELPHI,成为了一名JAVA程序员~~~~我入行时用的就是DELPHI,到现在也一年半了,还真有点舍不得呢。散分~~~~~~~~~~~
- TCustoAdoDataSet.Locate 为什么总得不到期望的执行结果
- 紧急求助!请问如何在DBGrid中移动一行的位置?
- 具体怎样实现:程序启动时按条件正常显示或最小化成托盘图标
- 链接的是DCU文件,运行时却要PAS文件,是怎么回事啊,请高手指教
- 三个问题一把问,谁能救我
- 本人现在正在准备开发一个两岸三地的生产管理系统,因为是初次用Delphi开发,所以。。。
- [Fatal Error] f_dzbl.pas(11): File not found: 'PluginBaseFormD.dcu'
- windows桌面移动
THeader = record
HeadFlag: Integer;
Length: Integer;
Sequence: Integer;
Ver: Byte;
Enc: Byte ;
Rec: array[0..1] of byte;
end; 四个字节长度的成员,表示长度.明显是Integer,DWORD之类的.
var
header: THeader;header.length = sizeof(THeader) + body_xml_length;如果是大端字节序,则:
header.length = htonl(sizeof(THeader) + body_xml_length);至于大端或小端,则看协议