zoukankan      html  css  js  c++  java
  • android multicast 多播(组播)问题

    有谁遇到过同样问题的可以探讨下,或者已经解决问题的,能够指导下我   


    获取组播锁

    private  InetAddress   group;

       WifiManager  wm=(WifiManager)getSystemService(Context.WIFI_SERVICE);

       MulticastLock mlock=wm.createMulticastLock("mygroup");

      mlock.acquire();

      group =InetAddress.getName("239.255.255.250");  //创建多播组

     不能在UI thread 上直接发送和接收组播,开辟一个子线程

     new Thread(){

       public void run(){

           StringBuffer sb=new StringBuffer();

           sb.append("data");  //发送组播的内容

          byte[]  sendata=sb.getBytes();

          mlock.setLoopbackMode(true);  //设置模式  Loopbackmode 不是很清楚 根据意思应该是   周期性的发送消息  这个要看具体的抓包什么情况

          mlock.joinGroup(group);

    //设置时间任务每隔3秒发送一次组播

      Timer timer=new Timer();

       timer.schedule(new MyTimerTask(),3000);

         while(true){

               DatagramPacket temppacket=new new DatagramPacket(bs, bs.length, group,prot);

              mlock.recive(temp);

             String packetIpAddress = new String(temp.getData(), 0, temp.getLength()).trim();

             if(){    //过滤出想要获取的信息

              }else{

                Thread.sleep(2000);          //休眠两秒再接收组播

              }

           

         }

        }

    }.start();

      

      //时间任务
    class MyTimerTask extends TimerTask{
    byte[] bs = new byte[1024];
    @Override
    public void run() {
    // TODO Auto-generated method stub
    DatagramPacket packet = new DatagramPacket(sendData,sendData.length, group, Integer.valueOf(pro.getProperty("multicast_port")));
    try {
    multicastsocket.send(packet);
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }

    }

      

    接收和发送放在同一个线程里循环执行

      

    使用 htc 4.01  和sony 4.2.2的可以接收到组播  但是lg nexus 4.3 和nexus 4.4 都接收不到组播!表示很不解呀

    难道版本越高 反而不支持组播还是需要在手机上做什么设置?







      



  • 相关阅读:
    使用Microsoft URL Rewrite Module for IIS 7.0修改WEB.CONFIG即可实现*.HTML伪静态 无需修改应用程序映射
    我的第二个智能手机 HKC G801 严重质量问题 USB接口坏后解决办法
    JQuery的跨域方法 可跨新浪、腾讯等任意网站
    IIS7下使用MSDNURLRewriting.msi开源组件的设置
    面向对象编程,真离不开设计模式?
    jQuery 的filter(),not(),split()用法
    2008年总结
    程序中 同步和异步的经典解释 (一听就懂)
    2009年元旦前祝福 开心一下
    到底什么是SOA?
  • 原文地址:https://www.cnblogs.com/riasky/p/3473081.html
Copyright © 2011-2022 走看看