Это (и я знаю об этом) очень простой вопрос. Я пытаюсь создать простое приложение, которое отправляет сообщения, используя протокол UDP через WIFI, с моего телефона на мой дрон. Я знаю IP-адрес дрона и порт для использования, и я убедился, что мой телефон был подключен к WIFI, излучаемому дроном, прежде чем запускать какие-либо тесты. Я могу пинговать дрон с моего компьютера при подключении к его WIFI. Вот что я получил:
private InetSocketAddress drone_address = new InetSocketAddress("192.168.10.1", 8889); // drone address for UDP communication
private InetSocketAddress local_address = new InetSocketAddress("", 9000); // for socket binding
public void messageDrone()
{
String _message = Orderer.getText().toString(); // value of the text field
Log.d("UDP_Client", "Message to send to drone: " + _message);
DatagramPacket datagramPacket = new DatagramPacket(
_message.getBytes(),
_message.length(),
drone_address // where we send the data to
);
try {
clientSocket.send(datagramPacket);
Log.d("UDP_Client", "Message was successfully sent to drone!");
} catch (IOException e) {
e.printStackTrace(); // failed to send message
Console.setText((e.toString()));
}
Orderer.setText(""); // clear text info on submit
}
И используя эти разрешения:
<uses-permission android:name = "android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name = "android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name = "android.permission.INTERNET"/>
Мой клиентский сокет был правильно создан с использованием local_address, предоставленного сверху. Адрес дрона на 100% правильный, и ошибка возникает из-за
clientSocket.send(datagramPacket);
, который возвращает
java.io.IOException: sendto failed: ENETUNREACH (Network is unreachable)
Отправленное сообщение представляет собой простую строку «команда», которая должна «инициировать режим SDK». «на дроне, поэтому позволяет ему выполнять следующие команды. Заказчик и Консоль - просто текстовые представления в моем .xml.
Пожалуйста, помогите !! Я уверен, что ответ очень прост, но мне не удалось найти его после нескольких часов поиска ...
Спасибо !!