Indy TIdIPMCastServer - 没有到主机的路由

问题描述

我正在尝试使用 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 (将#修改为@)