Broadcasting over Wi-Fi Direct

前端 未结 1 1987
天命终不由人
天命终不由人 2021-02-01 23:18

I\'m looking at the possibility to broadcast over a Wi-Fi Direct connection between multiple Android devices. I\'ve created a simple message broadcasting application to test whe

1条回答
  •  不知归路
    2021-02-01 23:59

    Shamelessly stolen from https://code.google.com/p/boxeeremote/wiki/AndroidUDP

    Try getting you network connection this way:

    InetAddress getBroadcastAddress() throws IOException {
        WifiManager wifi = mContext.getSystemService(Context.WIFI_SERVICE);
        DhcpInfo dhcp = wifi.getDhcpInfo();
        // handle null somehow
    
        int broadcast = (dhcp.ipAddress & dhcp.netmask) | ~dhcp.netmask;
        byte[] quads = new byte[4];
        for (int k = 0; k < 4; k++)
          quads[k] = (byte) ((broadcast >> k * 8) & 0xFF);
        return InetAddress.getByAddress(quads);
    }  
    

    Then try sending a packet this way:

    DatagramSocket socket = new DatagramSocket(PORT);
    socket.setBroadcast(true);
    DatagramPacket packet = new DatagramPacket(data.getBytes(), data.length(),
        getBroadcastAddress(), PORT);
    socket.send(packet);
    
    // If you want to listen for a response ...
    byte[] buf = new byte[1024];
    DatagramPacket packet = new DatagramPacket(buf, buf.length);
    socket.receive(packet);
    

    Edit: From same page to read try this ...

    WifiManager wifi = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
    MulticastLock lock = wifi.createMulticastLock("dk.aboaya.pingpong");
    lock.acquire();
    serverSocket = new DatagramSocket(19876);
    serverSocket.setSoTimeout(15000); //15 sec wait for the client to connect
    byte[] data = new byte[UDPBatPositionUpdater.secretWord.length()]; 
    DatagramPacket packet = new DatagramPacket(data, data.length);
    serverSocket.receive(packet);
    lock.release();
    String s = new String(packet.getData());
    System.out.println(s);
    

    Remember, that you need the following permission for it to work:

    0 讨论(0)
提交回复
热议问题