我想在我的局域网中发送广播UDP消息,该应用程序是客户端/服务器。
我希望更新用户界面,这样任何计算机都会发送消息来更新其他人。 我可以使用UDPServer indy,如何使用? 感谢
答案 0 :(得分:4)
创建两个应用程序,一个代表发件人,另一个代表接收者。
在表单上删除TIdUDPClient
和TButton
组件。在按钮的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上运行多个侦听器。
答案 1 :(得分:3)
创建TIdUDPServer
或TIdUDPClient
组件。两者都有Broadcast
方法,可以完全按照您的需要进行操作。