如定义了一个record:
type
RTeamReCord = record
ID :string;
ID1 :Integer;
ID2 :Double;
ID3 :Boolean;
end;怎样用socket send过去 然后在另一端recv接收然后转换类型回record呢?
type
RTeamReCord = record
ID :string;
ID1 :Integer;
ID2 :Double;
ID3 :Boolean;
end;怎样用socket send过去 然后在另一端recv接收然后转换类型回record呢?
协议如下:2个字节存储ID的长度+ID字符串,长度为前两个字节所存储的值+4个字节的ID1+8个字节ID2+1个字节ID3,0-表示false,1-表示true
procedure SendTreamRecord(rs: RTeamReCord);
var
i: integer;
len: word;
buf: array[0..1023] of byte;
begin
i := 0;
len := Length(rs.ID);
Move(len,buf[i],2);
i := i+2;
Move(rs.Id[1],buf[i],len);
i := i+len;
Move(rs.Id1,buf[i],sizeof(rs.ID1));
i := i+sizeof(rs.ID1);
Move(rs.Id1,buf[i],sizeof(rs.ID2));
i := i+sizeof(rs.ID2);
if rs.ID3 then buf[i] := 1
else buf[i] := 0;
//sendbuf...
end;
ID :string[20]; 两边都用同一个记录类型,就可以自由收发了