Cum să difuzați într-o rețea Wi-Fi de telefoane Android

I have a network of android phones, in which one of the phone acts as server. I try to do a broadcast using the destination IP as '255.255.255.255.'. But it fails to send message. I give the logcat below. The server IP is 192.168.43.1. I have also tried with '192.168.43.255'. But it too ended up in vain. For code, I had referred http://thinkandroid.wordpress.com/2010/03/27/incorporating-socket-programming-into-your-applications/

05-30 20:17:40.970: E/ClientActivity(698): java.net.UnknownHostException: /192.168.43.255
05-30 20:17:40.970: E/ClientActivity(698):  at java.net.InetAddress.lookupHostByName(InetAddress.java:506)
05-30 20:17:40.970: E/ClientActivity(698):  at java.net.InetAddress.getAllByNameImpl(InetAddress.java:294)
05-30 20:17:40.970: E/ClientActivity(698):  at java.net.InetAddress.getByName(InetAddress.java:325)
05-30 20:17:40.970: E/ClientActivity(698):  at project.android.aec.ConnectActivity$ClientThread.run(ConnectActivity.java:139)
05-30 20:17:40.970: E/ClientActivity(698):  at java.lang.Thread.run(Thread.java:1019)

Următoarea este codul folosit pentru a obține difuzarea IP

   private InetAddress getBroadcastAddress() throws IOException {
        mWifi= (WifiManager) getSystemService(Context.WIFI_SERVICE);
        DhcpInfo dhcp = mWifi.getDhcpInfo();
        if (dhcp == null) {
          Log.d("BCast Address Fetch", "Could not get dhcp info");
          return null;
        }

        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);
        }
0
Netmask este de 255.255.255.0. Am editat întrebarea pentru a adăuga codul folosit pentru a găsi adresa de difuzare. În cazul meu, este de 192.168.43.255
adăugat autor user1030768, sursa
Și submasmul ...?
adăugat autor nullpotent, sursa

1 răspunsuri

Iată ce folosesc pentru a obține adresele de difuzare

for (Enumeration en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
 NetworkInterface intf = en.nextElement();
 for (InterfaceAddress address : intf.getInterfaceAddresses()) {
   System.out.println(address.getBroadcast().toString().substring(1));;
 }
}

Codul din linkul de referință este un server TCP/Client simplu. Ar fi mai bine să postați codul pe care îl utilizați pentru a face UDP BroadCast.

0
adăugat
Cum pot să știu pe cel potrivit să folosească?
adăugat autor BlackBear, sursa
Android dezvoltatori, România — Moldova
Android dezvoltatori, România — Moldova
27 participanți

Parteneri: ciupacabra.com, @php_ro, @js_ro, @node_ro iOS: @ro_ios Reguli: https://github.com/js-ro/it-telegram/blob/master/RULES.md