Multicast

Reto Kramer kramer@REDACTED
Thu Sep 2 21:39:35 CEST 2004


The following works on the OSX and Linux for me.  I had trouble opening 
the multicast socket on WinXP, but no patience to figure out the cause.

cheers,
- Reto

Open a multicast port with:
     Res = gen_udp:open(get_port(), [binary,
				    	{reuseaddr,true},
				    {ip,get_addr()},
				    {multicast_loop,true},
				    {add_membership,{get_addr(),
						     {0,0,0,0}}}]),

where
   get_addr() ->
       {ok, App} = application:get_application(),
       case application:get_env(App, addr) of
   	   {ok, Val} ->
	      Val;
	   undefined ->
	      ?ADDR
       end.
   get_port() -> ...

and the env key of the .app file is
    {env,          [{addr, {239,0,0,1}}, % the multicast ip addr
			     {port, 10042},       % the port we multicast at
			     {period, 1000}]},    % heartbeat interval in ms

Send packets with
     Packet = {node_name, node()},
     ok = gen_udp:send(State#state.socket,
		      get_addr(),
		      get_port(),
		      term_to_binary(Packet)),

and receive packets like this:
   receive
	{udp, Socket, IP, InPortNo, Packet} ->
	    {node_name, Node} = binary_to_term(Packet),

#

On Sep 2, 2004, at 12:03 PM, Martin J. Logan wrote:

> Is it possible to have multiple nodes on a single machine listening for
> the same multicast packets at the same time? How can this be
> accomplished within erts?
>
> Cheers,
> Martin
>




More information about the erlang-questions mailing list