我是新来的wifi直接,我希望能够广播消息,因为我有一个时间表,当我点击发布按钮,我希望所有连接的设备都显示该消息在他们的时间表上。我能够发送数据点对点。我已经搜索了这个问题,我发现使用UDP是一个不错的选择,但我不知道如何实现它在WiFi直接。使用UDP在Wifi Direct上广播
我发现这个代码,使用UDP Wi-Fi以获取广播地址
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);
能否请你帮我,给我解释一下它如何工作 在此先感谢。
我有一个解决方案,您可以将数据包组播到多播组。所以如果所有的设备都加入了一个组播IP。然后发送一个UDP数据包到该组播IP将被所有设备接收。如果您希望我详细说明,请告诉我。 –
@ZiadHalabi是的请详细说明,如果你的代码给出了一些很好的示例代码 – lna1994
@ Ina1994请编辑你的问题,以便它在WiFi Direct中询问更广泛的广播问题。 –