mdns 发现对方的IP

1. MDNSClient

// start

 WifiManager wifi = (WifiManager) getSystemService(WIFI_SERVICE);
  MulticastLock mLock = wifi.createMulticastLock("mylockthereturn");
  mLock.setReferenceCounted(true);
  mLock.acquire();

 JmDNS mJmDNS = JmDNS.create();
 mJmDNS.addServiceListener("_workstation._tcp.local.", new ServiceListener(){

@Override
 public void serviceAdded(ServiceEvent ev) {
  if ("device_server_name".equals(ev.getName())) {

 ServiceInfo info = ev.getDNS().getServiceInfo(ev.getType(), ev.getName());
  String ip = info.getHostAddresses()[0];
     }
 }

 @Override
 public void serviceRemoved(ServiceEvent ev) {
   if ("device_server_name".equals(ev.getName())) {
  }

});

// stop

if (mJmDNS != null) {
    mJmDNS
      .removeServiceListener("_workstation._tcp.local." 
       new ServiceListener());
    mJmDNS.unregisterAllServices();
    mJmDNS.close();
    mJmDNS = null;
   }
   if (mLock != null) {
    mLock.release();
    mLock = null;
   }

 

mnds Server:

//start

WifiManager wifi = (WifiManager) getSystemService(WIFI_SERVICE);
MulticastLock  mLock = wifi.createMulticastLock("mylockthereturn");
  mLock.setReferenceCounted(true);
  mLock.acquire();

 

InetAddress addr = null;
     InetAddress[] aaString = NetworkTopologyDiscovery.Factory
       .getInstance().getInetAddresses();
     if (aaString == null) {
      Log.d(TAG, "无网络链接,启动MDNS服务失败!");
      return;
     }
     for (int i = 0; i < aaString.length; i++) {
      if (aaString[i].getHostAddress().contains("wlan0")
        || aaString[i].getHostAddress()
          .contains("eth0")) {
       continue;
      }
      addr = aaString[i];
     }
     if (addr == null) {
      Log.d(TAG, "无网络链接,启动MDNS服务失败!");
      return;
     }

     Log.d(TAG, "服务器地址:" + addr.getHostAddress());
     mJmDNS = JmDNS.create(addr);
    } catch (IOException e) {
     e.printStackTrace();
    }
    mServiceInfo = ServiceInfo.create("_workstation._tcp.local.",
      "device_server_name", 5353, "this is stb ip");
    JmmDNS.Factory.getInstance().addNetworkTopologyListener(
      new serverLitener());

    try {
     mJmDNS.registerService(mServiceInfo);
    } catch (IOException e) {
     e.printStackTrace();
    }

 

// stop

if (mJmDNS != null) {
    mJmDNS.close();
    mJmDNS = null;
   }
   if (mLock != null) {
    mLock.release();
    mLock = null;
   }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值