求助:Delphi自定义结构体,发送服务器,服务器接收信息
首先自定义一个结构包括UserID(30字节)、IP(4字节)、Mac(20字节)等信息不够的自动填充0,然后用IdUDPClient的sendBuffer发送给服务器,...
首先自定义一个结构包括UserID(30字节)、IP(4字节)、Mac(20字节)等信息不够的自动填充0,
然后用IdUDPClient的sendBuffer发送给服务器,服务器端接收怎么弄啊 ,求帮帮忙 展开
然后用IdUDPClient的sendBuffer发送给服务器,服务器端接收怎么弄啊 ,求帮帮忙 展开
1个回答
展开全部
如果服务端用TidUDPServer,那应该在它的OnUDPRead事件里处理:
先定义你的数据结构,比如:
type
PDataRec=^TDataRec;
TDataRec=recrod
userID:Array[0..29] of AnsiChar;
IP:Integer;
Mac:Array[0..19] of AnsiChar;
end;
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var buf:PByte;//缓冲区指针
begin
GetMem(buf,AData.Size);//分配内存
AData.Read(buf^,AData.Size);//把收到的数据读取缓冲区
//数据读到缓冲后,如果里面存的是TDataRec结构的数据就可以通过TDataRec的指针如下访问它的数据域
PDataRec(buf)^.userID...//访问结构中的userID
PDataRec(buf)^.IP..//访问其中的IP域
//...
FreeMem(buf);//释放分配的内存
end;
注意:上面的代码是基于Delphi7,indy9的,如果是新版的delphi和indy10等需要做些调整
先定义你的数据结构,比如:
type
PDataRec=^TDataRec;
TDataRec=recrod
userID:Array[0..29] of AnsiChar;
IP:Integer;
Mac:Array[0..19] of AnsiChar;
end;
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var buf:PByte;//缓冲区指针
begin
GetMem(buf,AData.Size);//分配内存
AData.Read(buf^,AData.Size);//把收到的数据读取缓冲区
//数据读到缓冲后,如果里面存的是TDataRec结构的数据就可以通过TDataRec的指针如下访问它的数据域
PDataRec(buf)^.userID...//访问结构中的userID
PDataRec(buf)^.IP..//访问其中的IP域
//...
FreeMem(buf);//释放分配的内存
end;
注意:上面的代码是基于Delphi7,indy9的,如果是新版的delphi和indy10等需要做些调整
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询