Cómo establecer una conexión punto a punto entre una aplicación de Android y una aplicación de Windows

Puede usar el socket para conectarse entre varios sistemas, puede usar Native Socket.IO y Android como una biblioteca de socket en Android.

Del mismo modo, puede usar socket en Windows para conectarse. pero la conexión del socket requiere la dirección IP y el número de puerto para conectarse a otro socket.

En caso de que pueda ingresar la información del socket manualmente en cada dispositivo, entonces está bien.

De lo contrario, necesita un servidor FIX común (IP estática o nombre de dominio fijo) donde cada uno de sus dispositivos registró allí la IP y el número de puerto.

El servidor web se utiliza para almacenar la información de enrutamiento. y en la solicitud de conexión, comparte la información de otro usuario con el Usuario solicitado.

Depende de la posición de estos dispositivos en una red

Si está presente en la misma red, como WIFI:
Simplemente puede usar TCP sobre IP y establecer una conexión P2P. Todo lo que necesita es la dirección IP de un dispositivo. Si no desea que el usuario configure esa parte, puede enviar paquetes de difusión UDP en un extremo y recibirlos en el otro extremo para descubrir dispositivos. Este enfoque no requeriría un servidor.

Si no está presente en la misma red, como un dispositivo en el hogar y el otro en el trabajo:

Puedo pensar en 2 formas en que esto se puede hacer

  1. Utilice el sistema de notificaciones push específico de la plataforma. Si los datos que desea enviar son muy pequeños, puede incluirlos en la notificación, de lo contrario, la notificación debe contener un enlace desde donde se pueden descargar los datos. Esta es la forma asincrónica de comunicación y requerirá un servidor para funcionar.
  2. Si necesita comunicación en tiempo real, aún necesitaría un servidor, pero en lugar de usar Notificaciones Push, podría hacer que ese servidor funcione como un proxy para una conexión P2P entre estos 2 dispositivos.

* EDITAR 1 *

No creo que sea útil mantener los recursos del socket, porque un recurso no utilizado puede agotar el tiempo de espera en cualquier fin.

Cualquier tipo de comunicación que tenga que suceder, TIENE que ser iniciada por el cliente. Es decir, si Android quiere enviar un archivo a Windows, no puede conectarse a Windows directamente. Solo puede enviar una Notificación Push a Windows, que luego puede iniciar una descarga basada en la información de la notificación.

Piense en cómo funciona WhatsApp:

El cliente A quiere enviar una foto al cliente B.

  1. El cliente A lo envía al servidor donde se guarda temporalmente.
  2. El servidor envía una notificación al Cliente B de que ha llegado un nuevo mensaje.
  3. El cliente B inicia la descarga del recurso
  4. Una vez que se completa la descarga en el Cliente B, la foto se elimina del servidor.

Al diseñar una solución de este tipo, tenga en cuenta que las aplicaciones del teléfono funcionan con recursos limitados de energía y computación, por lo que no puede tener un puerto abierto y escuchar nuevas conexiones todo el tiempo. Además, hay muchas restricciones sobre lo que puede hacer una aplicación cuando se ejecuta en segundo plano. Tenga la seguridad de que las notificaciones push siempre funcionan para cualquier aplicación, por lo que es la mejor opción para todas las plataformas.