Попробуйте catch, не могу уловить ошибку ENETUNREACH внутри вспомогательного класса сокета ⇐ Android
Попробуйте catch, не могу уловить ошибку ENETUNREACH внутри вспомогательного класса сокета
Я тестировал свое приложение, что произойдет, если я отключу Интернет на устройстве, и оно вышло из строя. Я уже заранее добавил кучу ловушек в код «init» помощника сокета, и они, похоже, не срабатывают. Вот как выглядит мой код:
fun start() { GlobalScope.launch(Dispatchers.IO) { пытаться { BasicSocket = DatagramSocket(UDP_SERVER_PORT) val udpPayload = "некоторая строковая полезная нагрузка" BasicSendToUDP(udpPayload, getBroadcastAddr()) в то время как (истина) { базовыйReceiveFromUDP() } } catch (e: SocketException) { Log.e(TAG, «Ошибка сокета:», e) } catch (e: SecurityException) { Log.e(TAG, «Ошибка секунды:», e) } catch (e: IOException) { Log.e(TAG, «Ошибка ввода-вывода:», e) } catch (e: Exception) { Log.e(TAG, «Ошибка:», e) } } } Этот метод start() вызывается в верхней части onCreate моего MainActivity.
Я уже пробовал другой подход, который выглядит следующим образом:
val t = Тема { пытаться { BasicSocket = DatagramSocket(UDP_SERVER_PORT) val udpPayload = "некоторая строковая полезная нагрузка" BasicSendToUDP(udpPayload, getBroadcastAddr()) в то время как (истина) { базовыйReceiveFromUDP() } } catch (e: Exception) { Log.e(TAG, «Ошибка:», e) } } т.старт() Но я все равно получаю ту же ошибку:
java.io.IOException: ошибка отправки: ENETUNREACH (сеть недостижимо) в libcore.io.IoBridge.maybeThrowAfterSendto (IoBridge.java:721) в libcore.io.IoBridge.sendto(IoBridge.java:688) в java.net.PlainDatagramSocketImpl.send(PlainDatagramSocketImpl.java:126) в java.net.DatagramSocket.send(DatagramSocket.java:723) в com.bsu.atlantis.utils.helpers.SocketHelper.basicSendToUDP$lambda$3(SocketHelper.kt:74)
basicSendToUDP() выглядит следующим образом:
fun BasicSendToUDP(payload: String, iAddr: InetAddress) { Нить { вал sendPacket = ДатаграммПакет( полезная нагрузка.toByteArray(), полезная нагрузка.длина, iАддр, UDP_SERVER_PORT ) BasicSocket.send(sendPacket) }.начинать() } Весь опубликованный мной код отлично работает, когда я включаю Wi-Fi на своем устройстве
Я тестировал свое приложение, что произойдет, если я отключу Интернет на устройстве, и оно вышло из строя. Я уже заранее добавил кучу ловушек в код «init» помощника сокета, и они, похоже, не срабатывают. Вот как выглядит мой код:
fun start() { GlobalScope.launch(Dispatchers.IO) { пытаться { BasicSocket = DatagramSocket(UDP_SERVER_PORT) val udpPayload = "некоторая строковая полезная нагрузка" BasicSendToUDP(udpPayload, getBroadcastAddr()) в то время как (истина) { базовыйReceiveFromUDP() } } catch (e: SocketException) { Log.e(TAG, «Ошибка сокета:», e) } catch (e: SecurityException) { Log.e(TAG, «Ошибка секунды:», e) } catch (e: IOException) { Log.e(TAG, «Ошибка ввода-вывода:», e) } catch (e: Exception) { Log.e(TAG, «Ошибка:», e) } } } Этот метод start() вызывается в верхней части onCreate моего MainActivity.
Я уже пробовал другой подход, который выглядит следующим образом:
val t = Тема { пытаться { BasicSocket = DatagramSocket(UDP_SERVER_PORT) val udpPayload = "некоторая строковая полезная нагрузка" BasicSendToUDP(udpPayload, getBroadcastAddr()) в то время как (истина) { базовыйReceiveFromUDP() } } catch (e: Exception) { Log.e(TAG, «Ошибка:», e) } } т.старт() Но я все равно получаю ту же ошибку:
java.io.IOException: ошибка отправки: ENETUNREACH (сеть недостижимо) в libcore.io.IoBridge.maybeThrowAfterSendto (IoBridge.java:721) в libcore.io.IoBridge.sendto(IoBridge.java:688) в java.net.PlainDatagramSocketImpl.send(PlainDatagramSocketImpl.java:126) в java.net.DatagramSocket.send(DatagramSocket.java:723) в com.bsu.atlantis.utils.helpers.SocketHelper.basicSendToUDP$lambda$3(SocketHelper.kt:74)
basicSendToUDP() выглядит следующим образом:
fun BasicSendToUDP(payload: String, iAddr: InetAddress) { Нить { вал sendPacket = ДатаграммПакет( полезная нагрузка.toByteArray(), полезная нагрузка.длина, iАддр, UDP_SERVER_PORT ) BasicSocket.send(sendPacket) }.начинать() } Весь опубликованный мной код отлично работает, когда я включаю Wi-Fi на своем устройстве
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Android.system.ErrnoException – ошибка подключения: ENETUNREACH (сеть недоступна)
Anonymous » » в форуме Android - 0 Ответы
- 38 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Обновление модели в try/catch: модель запоминает ошибочные значения обновления в catch
Anonymous » » в форуме Php - 0 Ответы
- 108 Просмотры
-
Последнее сообщение Anonymous
-