[erlang-questions] Struggling with multicast udp send

Rapsey rapsey@REDACTED
Mon Nov 16 08:21:40 CET 2009


The code I pasted was for sending. I use it to transmit an IPTV multicast
video stream. Why is source port important? If you wish to also receive on
that port, you could always have a different regular udp socket used just
for listening.


Sergej

On Mon, Nov 16, 2009 at 7:26 AM, Jarrod Roberson <jarrod@REDACTED>wrote:

> On Mon, Nov 16, 2009 at 12:41 AM, Rapsey <rapsey@REDACTED> wrote:
>
> > This is copy paste from my server:
> > Dest and Source are IP addresses (Source is IP of local computer, can be
> > {0,0,0,0})
> >
> > {ok, Sock} = gen_udp:open(0, [{reuseaddr,true}, {ip, Source},
> > {multicast_ttl, P#tspar.ttl},
> >                                                 {multicast_loop, false},
> > binary]),
> > inet:setopts(Sock, [{add_membership, {Dest, Source}}]);
> >
>
> Thanks, but that works great for listen, but I can't get it to work for
> sending.
> Also I don't want to pass in 0 for the port, that gives me a random port, I
> want to use port 5353.
> All the other programs can send on that port, why can't erlang?
> here is the output I get from iChat starting up.
>
> From: {192,168,0,105}
> Port: 5353
> Data:
> {ok,{dns_rec,{dns_header,0,false,'query',false,false,false,false,false,
>                               0},
>                   [{dns_query,"_presence._tcp.local",ptr,in}],
>                   [{dns_rr,"_presence._tcp.local",ptr,in,0,4500,
>                            "jhr@REDACTED
> _presence._tcp.local",undefined,
>                            [],false}],
>                   [],[]}}
>
> I get similar results with the exact same port 5353 from SubEthaEdit and
> iTunes.
>
> here is what I get when I try and send the message.
>
> From: {192,168,0,105}
> Port: 57345
> Data: {error,fmt}
>
> that is with passing in ZERO for the port on the :open() call.
>
> and here is what I get when I try and make it send on 5353 like the other
> programs
>
> 44> l(zcquery).
> {module,zcquery}
> 45> zcquery:send().
> ** exception error: no match of right hand side value {error,eaddrinuse}
>     in function  zcquery:send/0
> 46>
>
> anyone have any arcane knowledge of how to get this to behave correctly?
>


More information about the erlang-questions mailing list