QNA > Q > Quali Sono I Buoni Modi Per Imparare A Fare Semplici App Multiplayer Wifi/Bluetooth Locali?

Quali sono i buoni modi per imparare a fare semplici app multiplayer wifi/bluetooth locali?

aggiornamento: ecco una libreria che ho fatto per lo stesso. Utilizza semplici UDP per la scoperta e socket TCP per il trasferimento, in servizi in background, e mantenendo wakelock per i trasferimenti. Inoltre, un'applicazione di esempio che già la usa.

È possibile

  1. O usare le API di Android
  2. O usare la programmazione dei socket come in Java

Un buon punto di partenza per le API di Android pertinenti è la sezione Network Service Discovery della documentazione di Android[1] . C'è anche una libreria Salut[2] che mira a rendere questo più semplice, dato che la documentazione è davvero carente, soprattutto perché l'API non funziona molto bene.

Per il mio particolare caso d'uso, non potevo fare affidamento su NSD - né l'API di Android, né Salut danno la scoperta con qualche buona garanzia. Sto invece usando i sockets.

Si può sostituire la parte di scoperta dei servizi di NSD con il broadcasting di un datagramma su ogni interfaccia di rete's broadcast IP a intervalli regolari, diciamo 10 secondi, mentre ogni dispositivo ascolta lo stesso[3] . Alla ricezione del broadcast, otterrete l'IP del broadcaster tra le altre cose, che potrete poi utilizzare per una normale connessione TCP per qualsiasi ulteriore comunicazione con quel dispositivo.

Quindi fondamentalmente questo crea connessioni half-duplex in entrambi i sensi, poiché il server conosce l'IP del broadcaster ma il broadcaster non conosce quello del server da quello stesso broadcast. Solo dalla seconda trasmissione a ruoli invertiti, la prima trasmissione ottiene l'IP del primo server.

Non ho preso in mano un secondo dispositivo per molto tempo, ho potuto solo testare che la scoperta tramite datagrammi UDP funziona, con il 100% di garanzia per i dispositivi collegati via Wi-Fi, Bluetooth o tethering. Per quanto riguarda le considerazioni, il drenaggio della batteria potrebbe essere uno, dovrebbe essere correlato al mantenimento della presa aperta, ma devo ancora esaminare tutto ciò.

Sarebbe fantastico se lo provassi e mi facessi sapere anche se le prese TCP direttamente sono buone e quanto è il drenaggio della batteria.

Note

[1] Usare Network Service Discovery[2] markrjr/Salut[3] Scoperta della rete usando UDP Broadcast (Java)

Di Goldstein Siza

Gli ad blocker sono legali? :: Come fa la Mobile Premier League a fare soldi per il suo business?
Link utili