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; 展开
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; 展开
2个回答
展开全部
这个就是一个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;
代码中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;
展开全部
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;
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;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询