2011-01-18 29 views
1

多分これに対する解決策は非常に簡単で、私はそれを見るにはあまりにも愚かです。 は、私はインディ10で古いアプリケーションを再コンパイルする必要があると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のError - Bufferフォールトが発生します。 多分あなたの人の一人がアイデアを持っています。

乾杯アンディ

答えて

1

例えば、(インディ10のバージョンがそのメソッドを用意していない場合、その後、あなたが最初に新しいスナップショットに更新する必要があります)の代わりにTIdSocketHandle.AddMulticastMembership()メソッドを使用します

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

指定されたグループIPのメンバシップにアドレスTIdSocketHandle.IPを追加します。 IPは、TIdSocketHandle.IPVersionプロパティの設定に応じて、IPv4またはIPv6のいずれかとして指定できます。

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

+0

魅力的な作品です。ありがとう – Andy

関連する問題