采用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,最关键!

解决方案 »

  1.   

    type
      THeader = record
    HeadFlag: Integer;
    Length: Integer;
    Sequence: Integer;
    Ver: Byte;
    Enc: Byte ;
    Rec: array[0..1] of byte;
      end;  四个字节长度的成员,表示长度.明显是Integer,DWORD之类的.
      

  2.   

    不会问的是你室友同学(四省)吧
    var
      header: THeader;header.length = sizeof(THeader) + body_xml_length;如果是大端字节序,则:
    header.length = htonl(sizeof(THeader) + body_xml_length);至于大端或小端,则看协议
      

  3.   

    length怎么会是数组呢?如果你要用数组,也应该用动态数组,在明确长度后用setlength来改变数组长度。
      

  4.   

    发送的信息,应该就是把这个结构体发出去吧?那么消息长度实际就是结构体的大小了sizeof(Header)xml内容在那里发送呢?是先发送结构体再发送内容吗?另外结构体用integer类型就行了