From: Andreas R. <a.r...@gm...> - 2012-01-19 20:27:48
|
Hi together, I'm trying to implement a simple service discovery with jmmdns working as client. But I can't get it working when there is more than one network interface active and the network where the discoverable devices are connected to is not the primary interface in the network preferences. First step: I write a network topology listener that tries to discover the service "" on the discovered network interface: final JmmDNSImpl jmdns = (JmmDNSImpl) JmmDNS.Factory.getInstance(); jmdns.addNetworkTopologyListener(new NetworkTopologyListener(){ public void inetAddressAdded(NetworkTopologyEvent arg0) { final JmDNS specDNS; specDNS = arg0.getDNS(); specDNS.addServiceListener("_http._tcp.local.", new ServiceListener(){ public void serviceAdded(ServiceEvent arg0) { System.out.print("SERVICE FOUND "+arg0.getType()); } } } } That works like a charm if the device is connected to the first active network device (eth0) in the network setting (Mac OS X Lion). When I trace the packets in Wireshark, there are frequent queries for "_http._tcp.local." coming from the host both in ipv4 and ipv6. So far, so good. BUT when I listen to the second network interface (eth1), I can only see ipv6-queries. The ipv4-queries are only sent on the primary interface. So I guess that is the reason why the devices are not responding - right? The ipv4-Queries are not send to the right interface. Might that be a bug in jMDNS or in the Mac TCP/IP Stack? Or in my head? Please give me any advice how to find a solution for that problem. Regards Andreas |
From: Andreas R. <a.r...@gm...> - 2012-01-20 00:15:11
|
Me again, I tested the whole configuration on Windows XP. Works like it should! If I get a jmdns instance via create("hostname"), the devices connected to that network are found, not regarding which one it is, which order they have etc. If I do it with jmmdns, it works, too. On every network interface. I tried the Apple-Java-DNS-SD-Binding. That also works on the Mac without any problems, on all interfaces. So it seems to be a problem with Mac and jmdns :-( Funny: If I have the jmdns test running, and start the Apple-DNS-SD-Test, the jmdns produces results, too. That means it has to do something with the multicast broadcasts, I guess. I really would like to use jmdns instead of the Apple-Libs to avoid a special treatment for Mac OS X, and -even more important- to resolve the remote's MAC-Adress. I couldn't figure out a way to do that in another way than using jmdns. I really need the Mac-Adress of the discovered device for licensing. Regards Andreas Am 19.01.2012 um 21:27 schrieb Andreas Rettig: > Hi together, > > I'm trying to implement a simple service discovery with jmmdns working as client. > > But I can't get it working when there is more than one network interface active and the network where the discoverable devices are connected to is not the primary interface in the network preferences. > > First step: I write a network topology listener that tries to discover the service "" on the discovered network interface: > > final JmmDNSImpl jmdns = (JmmDNSImpl) JmmDNS.Factory.getInstance(); > jmdns.addNetworkTopologyListener(new NetworkTopologyListener(){ > > public void inetAddressAdded(NetworkTopologyEvent arg0) { > final JmDNS specDNS; > specDNS = arg0.getDNS(); > specDNS.addServiceListener("_http._tcp.local.", new ServiceListener(){ > public void serviceAdded(ServiceEvent arg0) { > System.out.print("SERVICE FOUND "+arg0.getType()); > } > } > } > } > > That works like a charm if the device is connected to the first active network device (eth0) in the network setting (Mac OS X Lion). > When I trace the packets in Wireshark, there are frequent queries for "_http._tcp.local." coming from the host both in ipv4 and ipv6. > So far, so good. > > BUT when I listen to the second network interface (eth1), I can only see ipv6-queries. The ipv4-queries are only sent on the primary interface. > So I guess that is the reason why the devices are not responding - right? The ipv4-Queries are not send to the right interface. > > Might that be a bug in jMDNS or in the Mac TCP/IP Stack? Or in my head? > Please give me any advice how to find a solution for that problem. > Regards > Andreas > > ------------------------------------------------------------------------------ > Keep Your Developer Skills Current with LearnDevNow! > The most comprehensive online learning library for Microsoft developers > is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3, > Metro Style Apps, more. Free future releases when you subscribe now! > http://p.sf.net/sfu/learndevnow-d2d_______________________________________________ > Jmdns-discuss mailing list > Jmd...@li... > https://lists.sourceforge.net/lists/listinfo/jmdns-discuss |