关于winsock发送的问题
定义:
TSocketHead = packed record
TotalLength: Cardinal;
CommandId: Cardinal;
SequenceId: Cardinal;
end;
{Socket包信息}
TSocketBody = packed record
Head: TSocketHead;
bytes: array of Byte;
end;
发送代码:
body.Head.TotalLength:=12;
body.Head.CommandId:=1;
body.Head.SequenceId:=1;
send(sck, body.Head, SizeOf(body.Head), 0);
我接收到的根本就不是这些信息,这是为什么?
[解决办法]
不是吧,你的发送端和接收端 采用的大小段不一致
Windows系统上默认是小段在前,
2个前提:如果服务段是PC,客户端为其他小段在后的设备如手机,
PC上用以下函数转换每个DWORD,
function bswap(dw : DWORD) : DWORD;register;
asm
BSWAP EAX
end;
201326592转换后得到12,16812168->2290614273,16777216->1