如题啊~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

解决方案 »

  1.   

    public void run(){
    try {
    DatagramSocket ds=new DatagramSocket(2333);
             ds.setBroadcast(true);    //构造发送数据报  把自己的名字发送出去
       byte[] data = name.getBytes();
       DatagramPacket outgoing= new DatagramPacket(
       data, data.length, InetAddress.getByName("255.255.255.255"),2888);    
       //发送数据报
       dsocket.send(outgoing);
       Log.d("boardIp_ok", "fffffffkkkkk" + "\n");
                
        }catch(Exception ee) {}
        finally {
            //关闭dsocket
           if(dsocket != null) dsocket.close();
          }
      

  2.   

    用电脑测试当然能用了,不过我用android手机测试就不能用了,照理说应该没问题啊
      

  3.   

    真是奇怪啊,前一段时间用学校的wifi无限局域网,用255.255.255.255进行广播怎么弄都不成功,然后今天向老师求教,老师一连说了三个“你水平太低”后走开,我很郁闷的回到宿舍,又试了一下255.255.255.255这个广播地址,居然能用了!!!!不知为何~~~fuck the world!!!!
      

  4.   

    估计是因为学校的wifi设备进行了“无缝漫游”设置,才导致你的255.255.255.255广播失败。
      

  5.   

    你没有开wifi的多播,
    WifiManager.MulticastLock.acquire()申请
    WifiManager.MulticastLock.release()释放然后用tcpdump抓包,如果抓到说明发出去了(没发出去,说明驱动屏蔽了),然后其它设备要是没收到,就是路由过滤了
      

  6.   

    我的意见如下:首先广播和多播是两回事,不要混了。其次广播只在本地局域网,并不过三层,所以没路由器什么事,要过滤广播,也是二层设备的事情,交换机可以干这个事。第三,使用255.255.255.255作为广播地址理论上行得通,但也有可以认为不够明智,以下是常见的windows路由表,请使用netstat -rn在自己的windows上确认:IPv4 路由表
    ===========================================================================
    活动路由:
    网络目标        网络掩码          网关       接口   跃点数
              0.0.0.0          0.0.0.0      192.168.1.1     192.168.1.64    276
            127.0.0.0        255.0.0.0            在链路上         127.0.0.1    306
            127.0.0.1  255.255.255.255            在链路上         127.0.0.1    306
      127.255.255.255  255.255.255.255            在链路上         127.0.0.1    306
          192.168.1.0    255.255.255.0            在链路上      192.168.1.64    276
         192.168.1.64  255.255.255.255            在链路上      192.168.1.64    276
        192.168.1.255  255.255.255.255            在链路上      192.168.1.64    276
            224.0.0.0        240.0.0.0            在链路上         127.0.0.1    306
            224.0.0.0        240.0.0.0            在链路上      192.168.1.64    276
      255.255.255.255  255.255.255.255            在链路上         127.0.0.1    306
      255.255.255.255  255.255.255.255            在链路上      192.168.1.64    276
    ===========================================================================可以从上表看到,每一个接口有该接口对应的广播地址,如我的局域网网口为192.168.1.0/24段,广播地址是192.168.1.255
    本地环回接口的广播地址为127.255.255.255而255.255.255.255在网口和本地环回上都作为广播地址。这意味着在这类设备上,你对255.255.255.255的指定端口发送UDP报,将会在所有网络接口上都发出去,假定你还有第二张网卡,那么这个广播会同时出现在两个局域网和一个本地环回内。通常做法应该明确列举可用的网络接口,各接口上可用的IP地址配置,然后选择特定的广播地址,以确实广播的内容不在不期待的网络内出现。很多接口上广播是没有意义的,比如PPP拔号上网,在这类接口上进行广播,和直接通讯没有区别。最后有条件请确认android的路由表里有没有255.255.255.255这个广播地址,可以考虑装个ssh上去看看。
      

  7.   

    Android 4.1以后网络通信不能放在主线程中。
      

  8.   

    楼主是咋个解决的呢?有答案请邮件至[email protected]!!万分感谢!!!!
      

  9.   

    楼主问题解决了吗?我现在也在做局域网通信,用的也是multicastSocket组播,我的现在问题是,有两台以上机器在线的时候,如果有2.3系统也有4.0系统的,用一台机器向组里发数据时只有4.0系统的能收到,如果在线的手机都是2.3的系统就没事,一个人发其他都可以收到,可以实现一对多通信,但是连续发几次后就保证不了了,貌似丢包现象比较严重