【问题标题】:How to broadcast in a wifi network of Android phones如何在安卓手机的wifi网络中进行广播
【发布时间】:2012-06-03 22:51:15
【问题描述】:

我有一个安卓手机网络,其中一部手机充当服务器。我尝试使用目标 IP 作为'255.255.255.255.' 进行广播。但它无法发送消息。我在下面给出logcat。服务器 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);
        }

【问题讨论】:

  • 网络掩码是 255.255.255.0。我已经编辑了问题以添加用于查找广播地址的代码。就我而言,它是 192.168.43.255

标签: android sockets network-programming android-wifi


【解决方案1】:

这是我用来获取广播地址的内容

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 Server/Client。如果您发布用于执行 UDP 广播的代码会更好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    相关资源
    最近更新 更多