简单的udpserver读数据问题,送分了!!!(50分)

  • 主题发起人 主题发起人 shm520
  • 开始时间 开始时间
S

shm520

Unregistered / Unconfirmed
GUEST, unregistred user!
请教一个问题比如:
type TMsgHead= record
MsgType:integer;
MsgTime:double;
end;
type TLogonData=packed record
Account:string[80];
name:string[80];
end;
type TLogonDataPackage=packed record
head:TMsgHead;
Body:TLogonData;
end;

udepserver先读TLogonDataPackage里的TMsgHead
再读 TLogonData 就读不出 TLogonData里的数据
 
不知道你怎么可能发生这样的事情 。等有测试环境的时候帮你测试一下。
你这样修改定义吧
type TLogonDataPackage=packed record
MsgType:integer;
MsgTime:double;
Account:string[80];
name:string[80];
end;
 
结构已定,不可以作修改
 
我刚才测试了你的结果,可以正确读出来啊。
我不知道你是怎么读的。我是这样的,
procedure TForm1.IdUDPServer1UDPRead(Sender:TObject; AData:TStream;
ABinding:TIdSocketHandle);
var test:TLogonDataPackage;
begin
AData.ReadBuffer(test,SizeOf(test));//这样读出来的数据是正确的。
end;
 
要么全部紧包,要么单独解释了
 
不行啊,好像与缓冲有关 你们再想想啊
 
都若干天了,都没会!!!
 
好像是在考别人噢》???? 你们再想想啊
 
先读到一个array of byte里头
var
buf: array[0..足够长度] of byte ;

adata.readReadBuffer(buf[0],adata.size);
move(buf[0],MsgHead,sizeof(TMsgHead));
move(buf[sizeof(TMsgHead)],LogonData,TLogonData);
 
如何取出MsgHead,LogonData中的数据,
就差这么一步了,快结分了。
 
接受答案了.
 
后退
顶部