if bPassSending then
begin
ShowMessage('不能再次发送')
exit
end
if OpenDialog1.Execute then
.....
发送完成之后
bPassSending := True
end
这个就是一个UDP接收数据的过程,接收到的数据在一个注tStream中,然后从流中取出数据,告示到Memo1中。代码中setlength(fd,adata.Size)是用来设置一个缓冲区的大小,也就是为这个动态数组分配空间。大小与接收到的数据大小相同。
adata.ReadBuffer(fd[0],adata.Size)就是从流中读取数据到缓冲区中,
其实这个写的比较啰嗦。可以简化一点。
procedure TForm1.IdUDPServer1UDPRead(Sender: TObjectAData: 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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)