如何在Delphi中发送广播消息
我想在我的局域网中发送广播UDP消息,应用程序是客户机/服务器 我希望更新用户界面,这样任何计算机都可以发送消息来更新其他计算机。 我可以使用UDPServer indy吗?如何使用?如何在Delphi中发送广播消息,delphi,broadcast,Delphi,Broadcast,我想在我的局域网中发送广播UDP消息,应用程序是客户机/服务器 我希望更新用户界面,这样任何计算机都可以发送消息来更新其他计算机。 我可以使用UDPServer indy吗?如何使用? 谢谢创建TIdUDPServer或TIdUDPClient组件。两者都有广播方法,可以完全满足您的需要。创建两个应用程序,一个代表发送方,另一个代表接收方 发件人 在表单上删除一个TIdUDPClient和一个t按钮组件。在按钮的OnClick处理程序上写入: procedure TfrmUDPClient.Br
谢谢创建
TIdUDPServer
或TIdUDPClient
组件。两者都有广播
方法,可以完全满足您的需要。创建两个应用程序,一个代表发送方,另一个代表接收方
发件人
在表单上删除一个TIdUDPClient
和一个t按钮
组件。在按钮的OnClick
处理程序上写入:
procedure TfrmUDPClient.BroadcastClick(Sender: TObject);
begin
UDPClient.Broadcast('Test', 8090);
end;
接受者
在表单上放置一个TIdUDPServer
,为其定义相同的端口(8090),并将其添加到OnUDPRead
处理程序:
procedure TfrmUDPServer.UDPServerUDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);
var
DataStringStream: TStringStream;
Msg: String;
begin
DataStringStream := TStringStream.Create('');
try
DataStringStream.CopyFrom(AData, AData.Size);
Msg := DataStringStream.DataString;
finally
DataStringStream.Free;
end;
ShowMessage(Msg);
end;
或者,在Indy的更高版本中:
procedure TfrmUDPServer.UDPServerUDPRead(AThread: TIdUDPListenerThread;
const AData: TIdBytes; ABinding: TIdSocketHandle);
var
Msg: String;
begin
try
{if you actually sent a string encoded in utf-8}
Msg := TEncoding.UTF8.GetString(AData);
except
end;
ShowMessage(Msg);
end;
要进行测试,请运行两个应用程序并单击按钮。要使用两个或多个“侦听器”进行测试,您必须使用另一台机器。也就是说,您不能在同一IP上运行多个侦听器。好的,您有关于这种方法的示例吗?没有。我从来没用过。你有什么麻烦?你给它你想要广播的字符串消息,它就会广播它。实际上,你可以在同一个ip上有多个UPD侦听器,请参见此处在Delphi7中的组件上切换
活动的和广播启用的到真的!此外,只有在设置绑定后,才应将Active
设置为true
!请注意,UDP不可靠-请参阅-“当发送消息时,无法知道消息是否会到达目的地;消息可能会在发送过程中丢失。没有确认、重新传输或超时的概念。”我将使用TCP客户端套接字连接来代替UDP,该连接在线程中侦听服务器消息。心跳协议可用于检测客户端或服务器端断开连接。