delphi高手进,关于UDP发送文件这块的问题

delphi高手进,关于UDP发送文件这块的问题,第1张

最简单的做法,可以在 if OpenDialog1.Execute then之前做一下检验,是否已经发送过一次,如果是,则提示,然后跳出,如果不是,运行发送过程,在发送过程完成之后,对该标志赋值。

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11801051.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存