Я не могу получать широковещательные пакеты UDP, AsyncTask застревает при получении (пакет) метода (или тайм-ауты, если установлены).
Я вызываю UdpTransmission после установки MulticastLock:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
WifiManager wifi = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
assert wifi != null;
WifiManager.MulticastLock wifiLock = wifi.createMulticastLock("ABC");
wifiLock.acquire();
UdpTransmission udpTransmission = new UdpTransmission();
udpTransmission.execute();
(...)
Это класс UdpTransmission:
package com.example.tcc.tcpconn;
import android.os.AsyncTask;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UdpTransmission extends AsyncTask<Void, Void, Void>
{
public UdpTransmission()
{
}
@Override
protected Void doInBackground(Void ... voids)
{
byte[] packet = new byte[32];
DatagramPacket dp = new DatagramPacket(packet, packet.length);
try(DatagramSocket ds = new DatagramSocket(49153))
{
ds.setBroadcast(true);
// ds.setSoTimeout(500);
String rcvd = Arrays.toString(packet);
}
catch(Exception e)
{
e.printStackTrace();
}
return null;
}
}
Манифест. xml:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
Скриншот WireShark :
wireshark_screenshot
Я что-то упустил? Любая помощь будет оценена!