在Android中通过UDP广播PING URL?

时间:2013-08-26 10:11:20

标签: android url udp ping broadcast

我非常认识UDP广播。

我在互联网上查看了一些例子,但是他们已经超越了我的想法。

我需要做的是创建UDP广播连接,发送和接收数据包。

另外还要ping一些URL或IP地址。

任何人都可以提供解决方案吗?

将考虑一个很好的例子!

1 个答案:

答案 0 :(得分:1)

enter image description here

获取广播地址

您需要访问wifi管理器以获取DHCP信息并从中构建广播地址:

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);

}

发送和接收UDP广播包

构建广播地址后,事情正常。以下代码将通过广播发送字符串数据,然后等待响应:

DatagramSocket socket = new DatagramSocket(PORT);
socket.setBroadcast(true);
DatagramPacket packet = new DatagramPacket(data.getBytes(), data.length(),
    getBroadcastAddress(), DISCOVERY_PORT);
socket.send(packet);

byte[] buf = new byte[1024];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
socket.receive(packet);

来源:http://code.google.com/p/boxeeremote/downloads/list

http://www.helloandroid.com/tutorials/simple-udp-communication-example

http://sourcecodemania.com/udp-datagram-sockets-in-java/