一协议:通过SOCKET通信:在DELPHI6下接受通过解码可以显示,接口方配合不当,一时发送老是报错,
采用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个字节。
请教如何发送,如何把10进制的包头+XML内容长度放在4字节里显示,曾做10-16进制转换等都不对,可能理解错误,高手指点下如何转换,发送!在线等立马散分

解决方案 »

  1.   

    4字节就是int的长度,你能保证10进制+xml长度不超出吗你可以进行一个换算,将10进制和长度这和为一个数,另一方解析而且两方平台对同种类型的大小要一致
      

  2.   

    请教高人如何把头表示用SOCKET发送呢?散钱散分
      

  3.   

      //数据长度
      b := ToBytes(aint);
      r[4] := b[0];
      r[5] := b[1];
      r[6] := b[2];
      r[7] := b[3];function ToBytes(const AValue: Integer): Tbytes;
    begin
      SetLength(Result, SizeOf(Integer));
      PInteger(@Result[0])^ := AValue;
    end;