質問

たぶんこれに対する解決策は非常に簡単で、私はそれを見るにはあまりにも馬鹿げています。 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 財産。

または、使用することを検討してください TIdIPMCastServerTIdIPMCastClient の代わりにコンポーネント TIdUDPServer 直接。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top