Generalidades

Android | Detección de servicios de red | Bonjour | Apple | Configuración cero |

¿Qué es una red de área local (LAN)?

Cisco define una red de área local (LAN) como un grupo de dispositivos conectados entre sí en una ubicación física, como un edificio, una oficina o un hogar. Las LAN pueden ser grandes o pequeñas, desde la red doméstica de un solo usuario hasta una red corporativa con miles de usuarios y dispositivos en una oficina o escuela.Para más información puedes leer aquí.

La mayoría de los desarrolladores usan este método en máquinas Linux para encontrar direcciones IP en la red local.Esta Arquitectura de la plataforma Android Basado en el kernel de Linux. En las aplicaciones de Android, los desarrolladores de Android pueden usar este método. No recomendaría este método ya que no es un mejor método, pero algunos desarrolladores de Android pueden encontrarlo útil. Puede encontrarlo en la pregunta de desbordamiento de pila. Antes de continuar, le pido que visite estas preguntas para obtener más aclaraciones.

String commandToRun = "adb shell netcfg";//find device ip address
Runtime.getRuntime().exec(commandToRun);

Para esto, recomiendo respuestas de desbordamiento de pila. Consulte la siguiente pregunta de StackOverflow.

Esta implementación no es una buena forma de obtener direcciones IP y nombres de host. Lo explico porque algunos desarrolladores de Android pueden encontrar esto útil.

En el primer método, la aplicación hace ping a todas las direcciones IP de la LAN. La ejecución lleva demasiado tiempo. A veces, el primer método falla 2 o 3 veces de cada 10 al configurar el nombre de host.

Como desarrolladores, una vez que se ejecuta un programa, siempre queremos escribir un buen algoritmo para obtener resultados más rápidos. En este método, podemos aprender cómo implementarlo. Network Service Discovery (NSD) proporciona nombres de host y servicios en la LAN. En NSD, los desarrolladores no tienen que preocuparse por hacer ping a cada instancia de dirección IP o configurar nombres de host. Antes de comprender Network Service Discovery (NSD), debemos comprender mDNS, ZeroConfig y Bonjour.

en StackOverflow problema, tengo que entender la configuración de mDNS.

¿Qué es mDNS?

En las redes informáticas, DNS de multidifusión (DNS móvil) resuelve los nombres de host en direcciones IP en redes pequeñas que no incluyen servidores de nombres locales. Es un servicio de configuración cero que utiliza esencialmente la misma interfaz de programación, formato de paquete y semántica operativa que el Servicio de nombres de dominio (DNS) de unidifusión. Está diseñado para ser un protocolo independiente o compatible con servidores DNS estándar.

leer Wikipedia para saber más información.

¿Qué es la configuración cero?

Un conjunto de técnicas para crear automáticamente usable Red de computadoras Residencia en Conjunto de protocolos de internet (TCP/IP) Cuando las computadoras o los periféricos de la red están interconectados. No requiere intervención manual del operador ni servidores especiales de configuración.

sigue leyendo Wikipedia Quiere consultar más información.

¿Qué es Bonjour?

Conocido como red de configuración cero, utiliza protocolos IP estándar de la industria para descubrir automáticamente dispositivos y servicios en la red local. Bonjour facilita el descubrimiento, la publicación y el análisis de servicios web a través de interfaces de programación sofisticadas y fáciles de usar accesibles desde Cocoa, Ruby, Python y otros lenguajes.

Bonjour es manzanaimplementación de Redes de configuración cero (configuración cero).

sigue leyendo Wikipedia Quiere consultar más información.

Entonces, como mDNS, Zeroconfig, Bonjour, busco las mismas cosas que busco en Android. Encontré una mejor manera aquí. NSD (Descubrimiento de servicios de red).

¿Qué es Awahi?

Antes de comprender NSD, los desarrolladores deben comprender la configuración del servicio del servidor local en el sistema. Avahi es uno de los servicios de descubrimiento instalados y ejecutándose en sistemas Linux/Ubuntu.

Avahi es un sistema que facilita el descubrimiento de servicios en redes locales a través del conjunto de protocolos mDNS/DNS-SD. Esto le permite conectar su computadora portátil o computadora a una red e instantáneamente poder ver a otras personas con las que puede chatear, encontrar una impresora para imprimir o encontrar un archivo compartido.

sigue leyendo Awahi y Wikipedia Quiere consultar más información.

Los desarrolladores pueden desarrollar y ejecutar sus servicios de descubrimiento personalizados, como encontrar impresoras para imprimir. Estos servicios de descubrimiento son muy ligeros. Para hacer esto, los desarrolladores deben definir tipos de servicios para descubrir servicios. La Autoridad Internacional de Asignación de Números (IANA) administra una lista autorizada y centralizada de tipos de servicios utilizados por los protocolos de detección de servicios, como NSD y Bonjour.Puede descargar la lista de Lista de nombres de servicios y números de puerto de la IANASi planea utilizar el nuevo tipo de servicio, debe completar Formulario de registro de puertos y servicios de la IANA.

¿Qué es el descubrimiento de servicios de red?

NSD permite que su aplicación acceda a los servicios proporcionados por otros dispositivos en la red local. Los dispositivos que admiten NSD incluyen impresoras, cámaras web, servidores HTTPS y otros dispositivos móviles.

NSD implementa un mecanismo de descubrimiento de servicios basado en DNS (DNS-SD) que permite que su aplicación solicite un servicio especificando el tipo de servicio y el nombre de la instancia del dispositivo que proporciona el tipo de servicio deseado. DNS-SD es compatible con Android y otras plataformas móviles.

Después de leer las definiciones de ZeroConfig, Bonjour y NSD, es como si fuera lo mismo, pero para una arquitectura diferente. Bonjour se usa principalmente en dispositivos Apple. Asimismo, NSD se utiliza para dispositivos Android.
Para desarrollar NSD, Android proporciona una guía para desarrolladores.

Los desarrolladores pueden implementar NSD en aplicaciones de Android utilizando la documentación de Android anterior.

Al probar la implementación de NSD en la red local, en Android 5.0 (Lollipop – API nivel 21) Antes de este lanzamiento, se encontró un problema con el servicio en la red local.Hice la pregunta en StackOverflow

Android está improvisando en cada nivel de lanzamiento.Google solucionó el problema anterior Android 6.0 (Marshmallow – Nivel de API 23)y superior (no estoy seguro, no lo probé. Ustedes tienen que verificar esta función por sí mismos). Cómo resolvemos este problema se explica en el siguiente método.

El método mencionado anteriormente, en Android 5.0 y versiones anteriores, NSD no funciona correctamente. Este método resolverá el problema anterior. Las aplicaciones cliente pueden usar la funcionalidad de publicación y suscripción para encontrar servidores en la LAN, ya que ambos deben conocer una clave específica y poder hacerlo mediante el Protocolo universal de datagramas (UDP).

¿Qué es el protocolo común de datagramas?

En las redes informáticas, Protocolo de datagramas de usuario (UDP) es uno de los miembros principales de Internet Protocol Suite. Usando UDP, las aplicaciones informáticas pueden enviar mensajes, en este caso llamados datagramas, a otros hosts en una red de Protocolo de Internet (IP). No se requiere comunicación previa para establecer un canal de comunicación o ruta de datos.

sigue leyendo Wikipedia Quiere consultar más información.

Al usar UDP, la dirección IP de un nombre de host específico se puede encontrar instantáneamente en la red local. Para hacer esto, escriba un código de servidor UDP simple en un lenguaje de programación (prefiera Python a Java porque Linux/ubuntu ya tiene paquetes. Para el lenguaje Java, tenemos que instalar JDK y configurar JRE para esto). Echa un vistazo al código de Python a continuación.

import socketlocalIP     = "127.0.0.1"localPort   = 20001bufferSize  = 1024msgFromServer       = "Hello UDP Client"bytesToSend         = str.encode(msgFromServer)# Create a datagram socketUDPServerSocket = socket.socket(family=socket.AF_INET, type=socket.SOCK_DGRAM)# Bind to address and ipUDPServerSocket.bind((localIP, localPort))print("UDP server up and listening")# Listen for incoming datagramswhile(True):bytesAddressPair = UDPServerSocket.recvfrom(bufferSize)message = bytesAddressPair[0]address = bytesAddressPair[1]clientMsg = "Message from Client:{}".format(message)
clientIP = "Client IP Address:{}".format(address)

print(clientMsg)
print(clientIP)

# Sending a reply to clientUDPServerSocket.sendto(bytesToSend, address)

Ejecute este código en el sistema local donde se debe encontrar la dirección IP. Este código puede transmitir un nombre de host/dirección IP, como el nombre de host del servidor.El código anterior funciona aquí.

Ahora en Android, se debe escribir una aplicación de cliente UDP para encontrar la dirección IP o el nombre de host en la red local. Para escribir código, consulte las preguntas y respuestas de desbordamiento de pila.

Esta función es 100% efectiva. Le dará el nombre de host con dirección IP, nombre de host y servicio en 1-5 segundos. También puedes usar este método.

Se utiliza para buscar la dirección IP de un servidor o para descubrir servicios que se ejecutan en sistemas de la red local, como finlandés y La InternetAplicación Network Tools, configurada mediante NSD, Zeroconfig, Bonjour. Es sin problemas.

Pero en algunos casos no configura la dirección IP correcta con el nombre del servicio y el tipo de servicio a través de UDP. Usar una combinación de NSD y UDP es la forma definitiva de superar todos los problemas. Para esta implementación, los desarrolladores (backend) también deben estar de acuerdo con esto. Rosemary Wang lo explica bien. Por favor, eche un vistazo a esto.

Para todos los métodos anteriores,

  • Ejecute el código en un subproceso en segundo plano, p. rutina, gerente de trabajo, rxJava, rxAndroid.
  • Solo ejecute este código cuando el dispositivo Android WiFi esté conectado al enrutador WiFi.agregar para esto ACCESO_RED_ESTADO & ACCESO_WIFI_ESTADO En el archivo de manifiesto de Android de la aplicación (no se puede encontrar el servidor local en los datos móviles).
  • Obtener resultados para direcciones IP o descubrir servicios lleva tiempo. Depende de la red wifi o de la disponibilidad de internet.

LEER  Cómo configurar SonarQube en un proyecto de Android a través de Android Studio | Autor: Rehan.CH | Noviembre de 2021

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba