Как вещать в сети Wi-Fi на телефонах Android

1

У меня есть сеть телефонов Android, в которой один из телефонов выступает в качестве сервера. Я пытаюсь сделать трансляцию с использованием IP-адреса назначения как '255.255.255.255.' , Но он не может отправить сообщение. Я даю логарифм ниже. IP-адрес сервера 192.168.43.1. Я также пробовал использовать '192.168.43.255'. Но это тоже оказалось напрасно. Для кода я ссылался на 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)

Ниже приведен код, используемый для получения широковещательного 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
    А подмаску ...?
  • 0
    Маска подсети 255.255.255.0. Я отредактировал вопрос, чтобы добавить код, используемый для поиска адреса трансляции. В моем случае это 192.168.43.255
Теги:
sockets
network-programming
android-wifi

1 ответ

2

Это то, что я использую для получения широковещательных адресов

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

Код в ссылочной ссылке - это простой TCP-сервер/клиент. Было бы лучше, если бы вы опубликовали код, который вы используете для UDP BroadCast.

  • 0
    Как я могу узнать, какой правильно использовать?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню