quelqu'un peut-il confirmer quelles sont les méthodes actuellement autorisées pour les communications par pair-pair dans le cadre Android _? J'ai besoin de transférer des chaînes JSON et j'utilise actuellement SMS _ qui fonctionne correctement, mais le problème est que les données finissent également comme beaucoup de messages texte. J'ai lu la première édition de Reto Meier de Professional Android _ Développement de l'application où il dit que les options de transfert de données n'étaient pas mises en œuvre en raison de problèmes de sécurité.
Cela a-t-il changé du tout et comment feriez-vous un transfert de données par pairs?
Avez-vous regardé Bibliothèque AllJoyn de Qualcomm's ? Il est conçu pour fonctionner sur Bluetooth ou WiFi, peut-être si vous vous connectez à des réseaux de gamme 3G ou plus étendus, cela ne fonctionnera pas.
Compte tenu de la variation et de la fiabilité des réseaux entre deux périphériques distants non sur le même réseau, je me poserais de question si pae-to-peer est la meilleure solution et vous éviterait de suggérer d'envisager d'utiliser un serveur d'applications entre les deux, afin que vous puissiez ensuite utiliser Nuage à la messagerie de périphérique [obsolète] (peut-être en tandem avec Google App Moteur). I.e. Pour envoyer un message, l'expéditeur le transmet au serveur et le serveur le transmet ensuite au destinataire.
En théorie, tous les périphériques sur le net ont une adresse IP unique et peuvent se parler, mais il est rarement aussi simple que des routeurs/pare-feu sont configurés différemment, vous devez donc accorder une grande attention portée aux ports que vous utilisez, en particulier compte tenu de nombreux éléments entrants. Les ports sont bloqués par défaut pour des raisons de sécurité.
Vous pouvez simplement utiliser des sockets UDP/TCP. Dans un thread séparé, vous configurez la prise d'écouteurs côté serveur et c'est tout. Bien sûr, votre demande doit d'abord être démarrée (ou doit fonctionner en arrière-plan tout le temps). Voici un exemple:
Si vous avez également besoin d'une découverte de pair qui rendra la chose plus difficile.
Vous devriez également consulter Peerdroid, un projet open source disponible ici . J'ai cherché aux options de communication des pairs du point de vue d'avoir une collection de périphériques fédérées (pré-jumelé, si vous le souhaitez, similaire à la paire Bluetooth); Cette bibliothèque semble pouvoir vous donner le fondement de ce que vous essayez de faire.
Si vous êtes sur votre propre réseau (par exemple une connexion Wi-Fi de maison ou de bureau), vous devriez pouvoir interroger pour d'autres périphériques connectés. Si le réseau que vous êtes sur votre contrôle n'est pas sous votre contrôle (réseau mobile ou wifi public), le réseau aura été configuré pour isoler chaque appareil de tout le reste. Dans ce cas, vous n'aurez aucun choix que de mettre un serveur pour agir comme l'homme au milieu. Cela apporte ses propres compromis architecturaux - chaque appareil doit interroger régulièrement le serveur ou garder une connexion ouverte - à moins que vous utilisiez Google App Moteur, qui prend en charge les notifications push sur la propre infrastructure de Google.
Merci pour votre réponse LDX, mais j'aurais besoin de découverte de pair comme vous l'avez indiqué. Certaines recherches supplémentaires semblent indiquer XMPP comme une technologie appropriée et il existe maintenant des services proposés, bien que ceux-ci semblent être destinés aux notifications de "serveur". Il y a une bonne discussion ici sur XMPP et certains plus ici Bien qu'il semblerait qu'il y ait encore des problèmes à traiter, tels que le sondage V, Open HTTP Open HTTP connexions et vie de la batterie. Xtify semble prometteur, en particulier leur service Web. J'espère que cela fournit des informations appropriées aux autres examinant le sujet de la communication de données par des pairs.
Essayer pushsharp . Une bibliothèque latérale de serveur pour l'envoi de notifications push vers iOS (APNS iPhone/iPad), Android (C2DM et GCM - Google Cloud Message), les périphériques Windows Phone et Windows 8.