如何使用INDY的UDP发送一条记录类型的数据,然后接收端接收还原到一个此记录型的变量中?(100分)

  • 主题发起人 主题发起人 phenix3344
  • 开始时间 开始时间
P

phenix3344

Unregistered / Unconfirmed
GUEST, unregistred user!
请给出一个例子,谢谢![:(]
 
用IndyServer,TIdUDPServer,在Onread实践里
var
A:TStruct;//一个结构

AStream.Readbuffer(A,AStream.Size);
 

AStream.Readbuffer(A,sizeof(A));
应该更好点吧
 
coolbaby的办法安全一些,这个要看情况而定,呵呵
 
rocedure TUDPMainForm.UDPServerUDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);
var
abc:TestRecord;
begin
AData.ReadBuffer(abc,3);
end;




procedure TUDPMainForm.SendButtonClick(Sender: TObject);
var
abc: TestRecord;
begin

abc.a:='This is A zhi yu!';
abc.b:='BBBBBBBBB';
abc.c:=123;
ReceivedString:= inttostr(sizeof(abc)) ;
UDPClient.SendBuffer(abc,sizeof(abc));
end;

发送没问题,但一接收就出错,不知是何原因?

 
你的结构abc估计是这样的
TestRecord:record
a:string; //错误,正确的应该用 a:array[0..127] of char;
b:string; //Error b:array[0..127] of char;
c:string; //Error c:array[0..127] of char;
end;

if AData.Size>=sizeof(abc) then
AData.ReadBuffer(abc,sizeof(abc))
else
AData.ReadBuffer(abc,AData.Size);
 
多人接受答案了。
 
后退
顶部