Indy 10和设置套接字选项

时间:2011-01-18 16:10:01

标签: delphi indy10

也许对此的解决方案非常简单,我只是太愚蠢了。 我需要使用Indy 10重新编译一个旧的应用程序,而这一行曾经是

inUDPServer.Binding.SetSockOpt(Id_IPPROTO_IP, Id_IP_ADD_MEMBERSHIP, PChar(@mreq), SizeOf(mreq));

但新的TIdSocketHandle.SetSockOpt需要3个整数。 现在我该如何提供ip_mreq?只是传递imr_multiaddr.S_addr会导致#10014错误 - 缓冲区错误。 也许你们其中一个人有个主意。

干杯安迪

1 个答案:

答案 0 :(得分:1)

使用TIdSocketHandle.AddMulticastMembership()方法(如果您的Indy 10版本没有该方法可用,那么您必须先更新到更新的快照),例如:

inUDPServer.Binding.AddMulticastMembership('Group IP address');

它将TIdSocketHandle.IP地址添加到指定组IP的成员资格中。 IP可以指定为IPv4或IPv6,具体取决于TIdSocketHandle.IPVersion属性的设置。

或者,请考虑直接使用TIdIPMCastServerTIdIPMCastClient组件而不是TIdUDPServer