我是新來的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中詢問更廣泛的廣播問題。 –