Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi Indy 10和设置插座选项_Delphi_Indy10 - Fatal编程技术网

Delphi Indy 10和设置插座选项

Delphi Indy 10和设置插座选项,delphi,indy10,Delphi,Indy10,也许解决这个问题的方法很简单,我只是太傻了,看不见。 我需要用Indy 10重新编译一个旧的应用程序,这行代码曾经是 inUDPServer.Binding.SetSockOpt(Id_IPPROTO_IP, Id_IP_ADD_MEMBERSHIP, PChar(@mreq), SizeOf(mreq)); 但是新的TIdSocketHandle.SetSockOpt需要3个整数。 现在我应该如何提供ip_mreq?仅仅传递imr#u multiaddr.S#u addr就会导致#10014

也许解决这个问题的方法很简单,我只是太傻了,看不见。 我需要用Indy 10重新编译一个旧的应用程序,这行代码曾经是

inUDPServer.Binding.SetSockOpt(Id_IPPROTO_IP, Id_IP_ADD_MEMBERSHIP, PChar(@mreq), SizeOf(mreq));
但是新的TIdSocketHandle.SetSockOpt需要3个整数。 现在我应该如何提供ip_mreq?仅仅传递imr#u multiaddr.S#u addr就会导致#10014错误-缓冲区故障。 也许你们当中有人有主意


干杯Andy

请改用
TIdSocketHandle.AddMulticastMembership()
方法(如果您的Indy 10版本没有该方法,则必须先更新到较新的快照),例如:

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


可选地,考虑使用<代码> TIDIPMCASServer 和<代码> TIdipMcStaseCudio组件,而不是直接>代码> TIDUPDPServer < /C> > .< /P>

使用<代码> TeToSokEththle。AddioMultuMaskSub()/<代码>方法代替(如果您的Indy 10版本没有该方法,则必须首先更新到较新的快照),例如:

它将
TIdSocketHandle.IP
地址添加到指定组IP的成员身份。根据
TIdSocketHandle.IPVersion
属性的设置,可以将IP指定为IPv4或IPv6

可选地考虑使用<代码> TIDIPMCASServer < /C>和<代码> TIdipMcStaseCudio组件,而不是直接>代码> TIDUPDPSServer 。

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