在带有R15B03的osx机器上使用udp

时间:2013-02-18 08:33:34

标签: erlang

我尝试通过udp进行多播,但是当我在osx下使用erlang R15B03时,我遇到了问题。如果我在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下运行没有错误。

有没有人可以帮助我?

谢谢, ULF

1 个答案:

答案 0 :(得分:0)

现在我发现了我的问题。

  1. 我必须添加{ip,real ip}而不是{0,0,0,0}
  2. 我必须通过我的本地IP发送。