K
kittycat
Unregistered / Unconfirmed
GUEST, unregistred user!
封包格式为0x02 SEQ Length Data CheckSum 0x03(以十六进制02开头,03结尾),SEQ为序列号(seq为ASCII(8),比如00000000),Length为Data长度(Hex(2)),Check Sum是自”传输序号”字段的第一个 Byte 起,至”资料内容”字段最后一个 Byte 止,XOR 所有的 Bytes,并将所得之值存放于本字段。
Data:array of byte,假设Data为7 3 0 0。
请问最后结果是2 0 4 0 7 3 0 0 0 3么,或者请看一下我得封包程序
procedure buildpacket1(arrdata:array of byte); //第一层封包
var
checksum:byte;//校验码
i,j:integer;
arr1:array of byte;
begin
setlength(arr1,length(arrdata)+6) ; //设置arr1的长度
arr1[0]:=2;//报头
arr1[1]:=00000000;//向IX Gateway发请求
Pbyte(@arr1[3])^:=hi(Length(arrdata)); //传入数据的长度,length字段为两个字节
Pbyte(@arr1[2])^:=lo(Length(arrdata));
for j:=4 to 4+length(arrdata)-1 do //写入数据
arr1[j]:=arrdata[j-4];
checksum:=arr1[1];
for i:=2 to 2+1+Length(arrdata) do
checksum:=checksum xor arr1 ;
arr1[4+length(arrdata)]:=checksum; //checksum赋值
arr1[5+length(arrdata)]:=3; //报尾
end;
我感觉自己写的没错,可是发到服务器上就是没反应,它把我发去的数据包当作垃圾给仍了
Data:array of byte,假设Data为7 3 0 0。
请问最后结果是2 0 4 0 7 3 0 0 0 3么,或者请看一下我得封包程序
procedure buildpacket1(arrdata:array of byte); //第一层封包
var
checksum:byte;//校验码
i,j:integer;
arr1:array of byte;
begin
setlength(arr1,length(arrdata)+6) ; //设置arr1的长度
arr1[0]:=2;//报头
arr1[1]:=00000000;//向IX Gateway发请求
Pbyte(@arr1[3])^:=hi(Length(arrdata)); //传入数据的长度,length字段为两个字节
Pbyte(@arr1[2])^:=lo(Length(arrdata));
for j:=4 to 4+length(arrdata)-1 do //写入数据
arr1[j]:=arrdata[j-4];
checksum:=arr1[1];
for i:=2 to 2+1+Length(arrdata) do
checksum:=checksum xor arr1 ;
arr1[4+length(arrdata)]:=checksum; //checksum赋值
arr1[5+length(arrdata)]:=3; //报尾
end;
我感觉自己写的没错,可是发到服务器上就是没反应,它把我发去的数据包当作垃圾给仍了