Delphi Socket api 发送结构问题
我做的Socket api程序,客户端发送一个结构体,结构为:
TSockMsg=record //网络发送消息结构
Head:array [0..3] of char;
CH:integer; //通道
ComType:integer; //命令类型
Command:integer; //命令
Content:array [0..255] of char; //命令内容 string[255]string
end;
PTSockMsg = ^TSockMsg;
客户端发送
Head := #5#2#1#31;
CH := 1;
ComType := 2;
Command := 3;
Content := 'Hello';
发送到服务器端后,服务器使用一个260字节的缓冲区接收,接收内容为:
(#5, #2, #1, #31, #1, #0, #0, #0, #2, #0, #0, #0, #3, #0, #0, #0, 'H', 'e', 'l', 'l', 'o', #0, #0, #0, ...共260字节)
我想在服务器端转换为下面这个结构
TSockMsg=record //网络发送消息结构
CH:integer; //通道
ComType:integer; //命令类型
Command:integer; //命令
Content:string; //命令内容
end;
PTSockMsg = ^TSockMsg;
我用的方法是:(recvBuf为缓冲区接收的内容)
var TempStr : string;
RecvCmd : TSockMsg;
TempStr := copy(recvBuf,5,4); //取出前5..8个字符赋给CH
RecvCmd.CH := PInteger(PChar(TempStr))^; //获得CH
TempStr := copy(recvBuf,9,4); //取出前9..13个字符赋给ComType
RecvCmd.ComType := PInteger(PChar(TempStr))^; //获得命令类型
TempStr := copy(recvBuf,13,4); //取出前14..17个字符赋给Command
RecvCmd.Command := PInteger(PChar(TempStr))^; //获得命令
RecvCmd.Content := copy(recvBuf,18,length(recvBuf)-17);//剩余的内容赋给Content
现在的问题是 上面这个过程总有错误,请大家帮我找找哪里不对。谢谢