Мне нужно отправить запрос с устройства, которое находит определенные устройства в текущей сети (Wi-Fi), в которых уже реализован клиент. Мне нужно получить IP-адреса всех таких устройств. Пока у меня есть это:
protected Void doInBackground(Void... voids) {
DatagramSocket socket = null;
try {
socket = new DatagramSocket(7432);
byte[] msg = new byte[]{0,2,9,0,4};
Log.d("sending", "Sending data " + Arrays.toString(msg));
DatagramPacket packet = new DatagramPacket(msg, msg.length,
InetAddress.getByName("192.168.1.255"), 7432);
socket.send(packet);
socket.setBroadcast(true);
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
byte[] buf = new byte[1024];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
try {
while (true) {
if (socket != null){
socket.receive(packet);
}
String s = String.valueOf(packet.getAddress());
Log.e("response", "Received response " + s);
}
} catch (SocketTimeoutException e) {
Log.d("timeout", "Receive timed out");
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
Я также пытался с 255.255.255.255
, и я получаю эту ошибку:
E/adbd: failed to connect to socket 'localabstract:com.example.fixxxer.skyzapper': Connection refused
Я даже не уверен, что код, который у меня есть, в порядке, но на удивление нет адекватной информации в сети, и, как только я попробовал, тоже не работает. Я застрял на некоторое время над этой проблемой.