1

udpを介してマルチキャストしようとしましたが、osxでerlangR15B03を使用すると問題が発生します。Ubuntu 12.10で同じコードを実行すると、すべて正常に動作します。

ソケットを開くときは、次のオプションを使用します。

-define(MULTICAST_GROUP, {239,255,255,250}).
-define(MULTICAST_PORT, 1900).
-define(OPTIONS,  [list,  {active,true}, {ip, ?MULTICAST_GROUP},{multicast_ttl, 255},   {reuseaddr,true},{multicast_loop,true}]).
{ok, Socket} = gen_udp:open(?MULTICAST_PORT, ?OPTIONS), 
inet:setopts(Socket ,[{add_membership,{?MULTICAST_GROUP, {0,0,0,0}}}]),

OSX 10.7.5でコードを実行すると、次のエラーが発生します。

=ERROR REPORT==== 18-Feb-2013::09:21:38 ===
** Generic server sender terminating 
** Last message in was send_alive
** When Server state == {state,#Port<0.929>}
** Reason for termination == 
** {{badmatch,{error,eaddrnotavail}},
[{sender,handle_info,2,[{file,"src/sender.erl"},{line,110}]},
{gen_server,handle_msg,5,[{file,"gen_server.erl"},{line,607}]},
 {proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,227}]}]}
1...Address : {239,255,255,250}  Port : 1900

前に書いたように、同じコードのコードはUbuntuでエラーなしで実行されます。

私を助けてくれる人はいますか?

ありがとう、ウルフ

4

1 に答える 1

0

今、私は自分の問題を見つけました。

  1. {0,0,0,0}ではなく{ip、realip}を追加する必要がありました
  2. ローカルIPを送信する必要があります。
于 2013-02-19T17:48:37.867 に答える