首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

关于winsock发送的有关问题

2013-12-19 
关于winsock发送的问题定义:TSocketHead packed recordTotalLength: CardinalCommandId: CardinalSequ

关于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

热点排行