JmDNS
我正在实现JmDNS,如下here。在我的android 2.3.5 htc Evo上运行代码时,我能够发现我的linux计算机。但是,当我在我的三星galaxy s3(4.1.0)上运行相同的代码时,没有任何显示。奇怪的是,它一周前在我的4.1上工作,现在却没有。我试过别人的解决方案here,但没有运气。如果有人经历过这一点,并且可以解释为什么姜饼与jmdns合作而不是软糖。
澄清:
我的android 4.1设备不会解析除从设备创建的服务以外的任何服务。我的2.3设备将解析除4.1设备创建的服务之外的服务。它可能是ip6到ip4吗?
答案 0 :(得分:9)
<强>解决:强>
我部分遵循了建议here,但我没有创建(String hostName),而是创建了(InetAddress addr)。
String ip = Formatter.formatIpAddress(wifiManager.getConnectionInfo().getIpAddress());
_bindingAddress = InetAddress.getByName(ip);
_jmdns.create(_bindingAddress);
答案 1 :(得分:4)
我很确定下面的代码正在我的手机上运行(android 4.1),供其他人参考〜
WifiManager wifi=(WifiManager)getSystemService(android.content.Context.WIFI_SERVICE);
WifiInfo wifiinfo = wifi.getConnectionInfo();
int intaddr = wifiinfo.getIpAddress();
byte[] byteaddr = new byte[] { (byte) (intaddr & 0xff), (byte) (intaddr >> 8 & 0xff), (byte) (intaddr >> 16 & 0xff), (byte) (intaddr >> 24 & 0xff) };
InetAddress addr=InetAddress.getByAddress(byteaddr); //Need to process UnknownHostException
jmdns=JmDNS.create(addr);