1,593
社区成员
发帖
与我相关
我的任务
分享
procedure Tfm_main.Button1Click(Sender: TObject);
var
MessageID: Integer;
ThisMessage: String;
ReceivedString: String;
begin
UDPClient.Send('ABC'); //用这句发送。
ReceivedString := UDPClient.ReceiveString(); //用这句来接收
end;
procedure Tfm_main.Timer1Timer(Sender: TObject);
var
ReceivedString: string;
begin
if not vconetion then
exit;
ReceivedString := UDPClient.ReceiveString();
if ReceivedString <> '' then
begin
UDPMemo.Lines.Add('Received:' + ReceivedString);
end;
end;
IdUDPClient1.ReceiveTimeout := 50; //设置等待时间很短,0.05秒
S := IdUDPClient1.ReceiveString(); //接收,超时,下次再来接收
以上可以简单地稍微解决卡的问题
如果要效果好,还是应该把接收放到单独的线程中去完成,收到内容后处理,之后通知主线程显示什么的。