type
tmymsg=record
name:string;
age:string;
end;
//发送var msg:tmymsg;
begin
msg.name='a' ;
msg.age='10'; idudpsvr.sendto('XXX.XXX.XXX.XXX',3333,rawtobytes(msg,sizeof(msg));//发送成功
end;//在接收端如何还原为记录类型呢?
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TBytes;
ABinding: TIdSocketHandle);
begin
// ????
end;
tmymsg=record
name:string;
age:string;
end;
//发送var msg:tmymsg;
begin
msg.name='a' ;
msg.age='10'; idudpsvr.sendto('XXX.XXX.XXX.XXX',3333,rawtobytes(msg,sizeof(msg));//发送成功
end;//在接收端如何还原为记录类型呢?
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TBytes;
ABinding: TIdSocketHandle);
begin
// ????
end;
解决方案 »
- 新手求教,Twsockt的一个小问题
- 刚下定决心学delphi,可是同学的一句话,让我心又要冷了,他说的对吗?
- 10请教delphi开发过程中的两个小问题…..先答者给全分…..
- 请问怎么得到指针的地址?
- 用InstallShield制作的安装程序,卸载的时,怎么指定文件不被卸载?急!!!!
- 有没有详细介绍DELPHI 函数用法的资料
- linzhisong(無聊), firetoucher(风焱) 请进,
- Delphi强制类型转换用什么命令啊!!
- 调查一下,各位朋友,你们一天中编程思路最好的时间段,欢迎大家讨论一下最佳工作时间。
- 我现在有个问题请教,如果成功我会给分的,急急急
- 大家給點意見,老大為什麼不讓我在SQL 語句裡面加 CASE 條件和運算?
- 关于文件安全性的设置
所以你那样发送会有问题。
这样定义:
type
tmymsg=record
name:string[31];
age:string[3];
end;
tmymsg=record
name:string;
age:string;
end;
定义不对!
应该
type
tmymsg=record
name:string[250];
age:string[250];
end;
procedure TForm1.Button1Click(Sender: TObject);
var
msg:tmymsg;
begin
msg.name := 'zxy';
msg.age := '10000';
idudpsvr.SendBuffer('127.0.0.1',1024,msg,sizeof(msg));//发送成功
end;
procedure TForm1.idudpsvrUDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var
msg:tmymsg;
begin
AData.Read(msg,sizeof(msg));
showmessage(msg.name);
showmessage(msg.age);
end;
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TBytes;
ABinding: TIdSocketHandle);如何把TBYTES类型转为我定义的MSG记录类型呢?
type
TUser = record
Id: Integer;
Ip: String[30];
end;
//发送
procedure TForm1.Button1Click(Sender: TObject);
var
user: TUser;
begin
user.Id := 1000;
user.Ip := '192.168.1.8';
IdUDPClient1.SendBuffer('127.0.0.1', 8888, RawToBytes(user,sizeof(user)));
end;
//接收
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TBytes;
ABinding: TIdSocketHandle);
var
user: TUser;
begin
BytesToRaw(AData, user, SizeOf(TUser));
ShowMessage(IntToStr(user.Id) + ' ' + user.Ip);
end;
begin
Assert(Length(AValue) >= ASize);
Move(AValue[0], VBuffer, ASize);
end;