1、TIdUDPClient
INDY9:
TIdUDPClient1.SendBuffer('127.0.0.1',9999,Request,SizeOf(Request));
TIdUDPClient1.ReceiveBuffer(ResponseBlock,SizeOf(ResponseBlock));
INDY10:
VAR:Temp:Tbytes;
TIdUDPClient1.SendBuffer('127.0.0.1', 9999, RawToBytes(Request, SizeOf(Request)));
SetLength(Temp, SizeOf(ResponseBlock));
TIdUDPClient1.ReceiveBuffer(Temp);
bytestoraw(Temp, ResponseBlock, SizeOf(ResponseBlock));
2、TIdUDPServer
INDY9:
procedure TfrmMain.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
......
if AData.Size = SizeOf(Request) then
begin
AData.Read(Request,SizeOf(Request));
.........
ABinding.SendTo(ABinding.PeerIP,ABinding.PeerPort,FileInfo,SizeOf(FileInfo));
INDY10:
procedure TfrmMain.IdUDPServer1UDPRead(Sender: TObject; AData: TBytes;
ABinding: TIdSocketHandle);
.......
if length(AData)= SizeOf(Request) then
begin
//将接收到的Tbytes信息转化为Trequest类型的数据结构Request中
BytesToRaw(AData, Request, SizeOf(TRequest));
ABinding.SendTo(ABinding.PeerIP,ABinding.PeerPort,rawtobytes(FileInfo,SizeOf(FileInfo)));
本文介绍使用 Indy 库实现 UDP 协议的客户端与服务器之间的数据发送与接收过程。针对 Indy9 和 Indy10 版本的不同 API,详细说明了如何构建请求并解析响应数据。
329

被折叠的 条评论
为什么被折叠?



