¿Puede una red bluetooth o wifi (spp) perder alguna vez los bytes o haber corrompido?

Algo me preocupa durante años. Trabajo con un montón de bluetooth y últimamente wifi corrientes (spp). Estos flujos siempre se conectan a dispositivos específicos y la comunicación se realiza mediante comandos de bytes simples.

Algunos de los dispositivos (sus microcontroladores) me programa y allí tengo que comprobar siempre si la señal en el cable es lo que esperaba, enviar y comprobar para crcs.

De alguna manera quiero hacer lo mismo en mi teléfono inteligente porque accedo a mis arroyos con "readByte" y leo byte by byte y siempre me pregunto si es realmente posible que a) un byte de un mensaje puede faltar b) los mensajes llegan mezclados O "fuera de secuencia"

No tengo ni idea de cuánto hace el hardware subyacente. ¿Comprueba cada mensaje con crc y solicita el mensaje de nuevo si está dañado? ¿O pasa ciegamente cada byte a través de mi método "readByte"?

Si el dispositivo envía el mensaje a y luego b, ¿es posible que el receptor reciba b antes de a y pasa mi código b antes de un o incluso mezclar los bytes como una cremallera y me dan un [0] entonces b [0] y luego un [1] y así sucesivamente.

¿Cuánta confianza en esos arroyos debería tener? Se agradecería una aclaración

Creo que puedes dormir bien. WiFi y Bluetooth basado en la red de conmutación de paquetes, cada paquete viene con crc, y la capa física tiene congestión incorporada y control de calidad de enlace – por lo que, aparte de los errores de firmware ultra raros, es realmente más confiable que la conexión en serie con cable.

En otras palabras – la corrección de errores se produce en un nivel inferior al que está utilizando.

Respuesta a la pregunta sobre la orden de llegada de paquetes: los protocolos punto a punto no se ven afectados por este problema. Reordenamiento de paquetes se produce cuando viajan por diferentes rutas, por lo tanto, no hay problema cuando no hay otras rutas.

Obtendrá los mismos bytes en el mismo orden si utiliza secuencias orientadas a bytes sobre esos protocolos, ya que están diseñadas con este objetivo en mente. El acceso por paquetes, por otro lado, no lo es, pero Android no le proporciona medios para usarlo.

Me siento como si alguna vez has aprendido acerca de Computer Network OSI Model , entenderá de lo que estoy hablando mejor.

En primer lugar , TCP/IP no tiene nada en común con Bluetooth . TCP es un protocolo de nivel de transporte, mientras que Bluetooth sería un protocolo de nivel inferior. Por lo tanto, podría utilizar TCP o UDP en la parte superior de Bluetooth, al igual que utilizar TCP y UDP en la parte superior de Ethernet.

En segundo lugar , cuando los datos transferidos a través de dispositivos bluetooth, TCP protocolo TCP se utilizaría. El TCP utiliza congestion recovery algorithms para asegurar que los datos se transfieren exactamente. Las implementaciones modernas de TCP incluyen cuatro algoritmos entrelazados para el control de flujo: inicio lento , evitación de congestión , retransmisión rápida y recuperación rápida . Por lo tanto, si desea saber más acerca de esto, puede buscar en Internet. Porque preferirían ser más teóricos que programáticos.

Bueno de la corrupción de datos no tengo ninguna buena idea. Pero "mezclar los bytes como una cremallera y darme un [0] entonces b [0], entonces un [1]" no debería suceder.

He construido la aplicación que analiza los mensajes nmea forma externa gps bluetooth. No comprobar nada y algunos cómo mi aplicación funciona estable.

  • Cómo deshabilitar la conexión automática WIFI en Android
  • Wifi triangulación de posición
  • Java.net.SocketException: recvfrom falló: ECONNRESET (Conexión restablecida por pares) Más de WIFI
  • Descubrir dispositivos móviles usando wifi
  • Android: Cómo obtener el dispositivo actual WiFi-nombre directo
  • Connectify detiene la conexión a Internet después de algún tiempo
  • Android: Detener / Iniciar servicio dependiendo del estado WiFi?
  • Android Scan para redes Wifi
  • Aplicación de Android que no se conecta a Wifi, pero funciona bien en 3G compartida a través de Wifi
  • Datos de enlace descendente de la ruta de Android vía WiFi y datos de enlace ascendente a través de la red móvil
  • Android: Escaneado de redes Wifi + Lista seleccionable
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.