问题描述
我正在尝试使用 Indy TIdIPMCastServer 来向一组客户端发送消息。但我得到的只是“套接字错误 # 10065 没有到主机的路由。”。我做错了什么?
unit MCSender;
interface
uses
Classes,IdGlobal,IdSocketHandle,IdIPMCastServer,IdIPMCastClient;
type
TSBUDPSender = class(TComponent)
private
FMCSender: TIdIPMCastServer;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure Send(Data: string); overload;
end;
implementation
uses
IdStack,SysUtils;
{ TSBUDPSender }
constructor TSBUDPSender.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FMCSender := TIdIPMCastServer.Create(Self);
FMCSender.IPVersion := Id_IPv4;
FMCSender.MulticastGroup := '224.0.0.1';
FMCSender.Port := 19151;
end;
destructor TSBUDPSender.Destroy;
begin
FMCSender.Free;
inherited;
end;
procedure TSBUDPSender.Send(Data: string);
var
BS: TBytesstream;
B: TBytes;
begin
if not FMCSender.Active then
FMCSender.Active := True;
BS := TBytesstream.Create;
try
B := BytesOf(UTF8Encode(Data));
BS.Write(B[0],Length(B));
FMCSender.Send(TidBytes(copy(BS.Bytes,BS.Size)));
finally
BS.Free;
end;
end;
procedure Test;
var
SBSender: TSBUDPSender;
begin
SBSender := TSBUDPSender.Create(nil);
try
SBSender.Send('ABC');
finally
SBSender.Free;
end;
end;
initialization
Test;
end.
我使用的是带有 Indy 版本的 Delphi 10.4.1。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)