java - Join multicast group using DatagramChannel without specifying network interface -


when using java's multicast socket can join multicast group without specifying networkinterface using code:

multicastsocket sock = new multicastsocket(port); sock.joingroup(addr); 

if want use nio on other hand can do:

datagramchannel dc = datagramchannel.open(standardprotocolfamily.inet)         .setoption(standardsocketoptions.so_reuseaddr, true)         .bind(new inetsocketaddress(port))         .setoption(standardsocketoptions.ip_multicast_if, ifc);  dc.join(addr, ifc); 

where ifc networkinterface interested on. if dont know network interface in advance how can join group multicastsocket?

one solution found using code:

multicastsocket msock = new multicastsocket(); networkinterface ifc = msock.getnetworkinterface(); msock.close(); datagramchannel dc = datagramchannel.open(standardprotocolfamily.inet)         .setoption(standardsocketoptions.so_reuseaddr, true)         .bind(new inetsocketaddress(port))         .setoption(standardsocketoptions.ip_multicast_if, ifc);  dc.join(addr, ifc); 

surprisingly code works , performed expected, when looking on networkinterface returned multicastsocket.getnetworkinterface() method saw returned interface named "0.0.0.0" of course not exists. there no way network interface of networkinterface.* factories

is solution reliable? can explain why works , if there better way achieve wants?

i using local address can find lan devices! can try it! e.g networkinterface ifc = networkinterface.getbyinetaddress(inetaddress.getlocalhost());


Comments

Popular posts from this blog

angularjs - ADAL JS Angular- WebAPI add a new role claim to the token -

php - CakePHP HttpSockets send array of paramms -

node.js - Using Node without global install -