delphi udp传输问题

哪位delphi高手帮我解释下procedureTForm1.IdUDPServer1UDPRead(Sender:TObject;AData:TStream;ABind... 哪位delphi高手帮我解释下
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var
fd : array of char;
t : int64;
s : string;
begin
try
setlength(fd,adata.Size); / 解释下
t := adata.Size;
adata.ReadBuffer(fd[0],adata.Size); /解释下
s := pchar(@fd[0]);
memo1.Lines.Add('消息来自于['+abinding.PeerIP+']['+abinding.ip+']:'+copy(s,0,t));
except
memo1.Lines.Add('接收数据失败');
end;
展开
 我来答
一树一花开Cr
2010-03-02 · 超过36用户采纳过TA的回答
知道答主
回答量:76
采纳率:0%
帮助的人:0
展开全部
这个就是一个UDP接收数据的过程,接收到的数据在一个注tStream中,然后从流中取出数据,告示到Memo1中。
代码中setlength(fd,adata.Size);是用来设置一个缓冲区的大小,也就是为这个动态数组分配空间。大小与接收到的数据大小相同。
adata.ReadBuffer(fd[0],adata.Size);就是从流中读取数据到缓冲区中,
其实这个写的比较啰嗦。可以简化一点。

procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var
s : string;
begin
try
setlength(s, adata.Size); // 为字符串分配空间
adata.ReadBuffer(s[1],adata.Size); // 读取字符串实际内容
memo1.Lines.Add('消息来自于['+abinding.PeerIP+']['+abinding.ip+']:'+ s);
except
memo1.Lines.Add('接收数据失败');
end;
noowa2007
2010-03-02 · TA获得超过756个赞
知道小有建树答主
回答量:1222
采纳率:0%
帮助的人:713万
展开全部
begin
try
//捕取错误
setlength(fd,adata.Size); / 解释下
//为fd数组设置空间
t := adata.Size;
//将数据的大小值传给t
adata.ReadBuffer(fd[0],adata.Size); /解释下
//从流中读取数据到缓存中
s := pchar(@fd[0]);
//将指定内存流中内容给变量s
memo1.Lines.Add('消息来自于['+abinding.PeerIP+']['+abinding.ip+']:'+copy(s,0,t));
except
memo1.Lines.Add('接收数据失败');
end;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式