2017-01-25 3 views
3

Je souhaite implémenter un module de découverte de service pour aller chercher l'adresse IP d'un périphérique de diffusion de service, similaire au navigateur bonjour. Est-il possible de l'implémenter dans Unity3D (Android/iOS). Quelqu'un peut-il me guider sur la façon dont je peux y parvenir. Un petit exemple serait vraiment utile. MerciComment implémenter DNS - Service Discovery dans Unity3D similaire au navigateur Bonjour

Édition 1: Un périphérique IOT diffuse un service DNS et je souhaite récupérer ce service dans l'application Unity pour trouver l'adresse IP du périphérique IOT. Je n'ai aucun accès au logiciel IOT ou au code source.

Répondre

2

Vous n'avez pas à le faire à partir de rien. Il y a une nouvelle API Unity appelée NetworkDiscovery qui est conçue pour simplifier cela.

Pour trouver l'adresse IP à laquelle vous souhaitez vous connecter, appelez le NetworkDiscovery.StartAsServer() côté serveur une fois dans la fonction Start().

Sur le côté client, appelez NetworkDiscovery.StartAsClient() puis implémentez la fonction OnReceivedBroadcast(string fromAddress, string data);. Lorsque le serveur est trouvé, la fonction OnReceivedBroadcast(string fromAddress, string data); est appelée et vous pouvez ensuite utiliser la valeur fromAddress pour vous connecter à votre serveur. Lorsque le client se connecte, vous pouvez arrêter la diffusion en appelant le NetworkDiscovery.StopBroadcast().

Si vous ne faites que cela à des fins d'apprentissage, vous avez juste besoin de diffuser avec le protocole UDP. Pour plus d'informations, vous pouvez lire this et this.

+1

J'ai essayé la classe NetworkDiscovery, il fonctionne très bien. Mais ici l'appareil de diffusion tiers n'est pas mon client de l'unité. Ce service n'est donc pas visible dans la fonction OnReceivedBroadcast(). Je peux voir le service diffusé par le périphérique tiers dans l'application du navigateur Bonjour sur le même périphérique, alors que je ne peux pas voir la diffusion UDP depuis le client Unity (éditeur/périphérique) sur l'application navigateur bonjour. –

+0

J'ai également couvert cela dans la deuxième partie de ma question. * Si vous ne faites que cela à des fins d'apprentissage, vous avez juste besoin de diffuser avec le protocole UDP. Pour plus d'informations, vous pouvez lire ceci et cela. * S'il vous plaît vérifier ces deux liens sur la façon de le faire. Le premier lien explique comment cela fonctionne. Les deuxièmes liens montrent comment diffuser sur un réseau avec UDP. C'est ce que tu veux. – Programmer

+0

Je ne suis pas en mesure d'y parvenir en utilisant NetworkDiscovery ou UDPClient. Il montre seulement la diffusion que je fais en utilisant NetworkDiscovery - Démarrer la diffusion et la diffusion UDP. Où, comme dans l'application du navigateur Bonjour, je vois aussi les imprimantes connectées au réseau. Je l'ai réussi avec succès en natif Android en utilisant la classe ServiceListener. Pouvez-vous me guider plus loin. Merci –