質問
たぶんこれに対する解決策は非常に簡単で、私はそれを見るにはあまりにも馬鹿げています。 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エラー - バッファ障害が発生します。多分あなたたちの一人がアイデアを持っています。
乾杯アンディ
解決
使用 TIdSocketHandle.AddMulticastMembership()
代わりに(Indy 10のバージョンにそのメソッドが利用可能でない場合、最初に新しいスナップショットに更新する必要があります)。
inUDPServer.Binding.AddMulticastMembership('Group IP address');
追加します TIdSocketHandle.IP
指定されたグループIPのメンバーシップへのアドレス。 IPSは、の設定に応じて、IPv4またはIPv6として指定できます TIdSocketHandle.IPVersion
財産。
または、使用することを検討してください TIdIPMCastServer
と TIdIPMCastClient
の代わりにコンポーネント TIdUDPServer
直接。
所属していません StackOverflow