2012-11-28 2 views
2

J'essaie de créer une application pour iOS qui peut se connecter à des ordinateurs exécutant MacOS ou Windows, et contrôler quelques trucs sur ces ordinateurs. Une autre application sera installée sur ces ordinateurs afin que l'application sur iOS puisse s'y connecter. Mais au début, je dois découvrir les ordinateurs du réseau sur lesquels mon application est installée et en cours d'exécution. Qu'est-ce qu'une bonne façon de faire? J'ai pensé utiliser la diffusion, la multidiffusion ou bonjour. Il y a-t-il des alternatives? Lequel est le meilleur pour ma situation?Découvrez les ordinateurs avec mon application installée sur le réseau

Je prévois de faire deux applications différentes pour macOS et windows, l'une avec l'objectif c et l'autre avec C#, donc le matériel de mise en réseau devrait être disponible pour les deux. Merci d'avance

+1

Avant d'essayer de l'implémenter, pensez à la façon dont vous l'implémentez? Vous allez scanner votre VLAN entier? envoyer le paquet de demande et attendre le paquet de réponse? – ilansch

+0

bien, c'est un peu vague pour moi aussi. J'ai d'abord pensé à diffuser un message et attendre une réponse, mais j'ai besoin de savoir quand un ordinateur a quitté le réseau, donc j'ai besoin de diffuser à certains intervalles, ce qui n'est probablement pas bon pour iOS. Je ne suis pas vraiment sûr de la direction à prendre. – mrt

+0

Ces ordinateurs sont-ils sur le même réseau? ils ont une adresse IP statique? est-ce une sorte d'application serveur-client? où votre application de contrôle est serveur et le reste sont des clients contrôlés? – ilansch

Répondre

1

L'option la plus simple serait, de loin, d'utiliser des paquets de diffusion IP/UDP. L'application sur les ordinateurs (fonctionnant sous n'importe quel système d'exploitation) peut être installée sur un port UDP prédéfini (par ex. 9999) et lorsque l'appareil iOS veut "scanner" le réseau, elle envoie un paquet IP/UDP avec le port de destination de 9999. A la réception du (des) paquet (s) de diffusion, l'application sur les ordinateurs peut répondre puisqu'elle connaît maintenant l'adresse IP de l'appareil iOS, et vous pouvez prendre des choses à partir de là. La façon la plus simple de gérer un ordinateur quittant le réseau est que l'application qui s'exécute sur l'ordinateur communique ce fait à l'appareil iOS car il connaît déjà l'adresse IP de l'appareil iOS. Mais si la liste actuelle des ordinateurs est cruciale, une sorte de mécanisme d'interrogation est inévitable, car les ordinateurs peuvent se bloquer pour une raison quelconque sans avoir la possibilité d'envoyer le message au revoir. La multidiffusion peut être utilisée comme suit: les ordinateurs envoient périodiquement des jointures IGMP pour un groupe de multidiffusion prédéfini (par exemple, 224.1.1.1), et le terminal iOS envoie le paquet UDP multidiffusion destiné à 224.1.1.1 lorsqu'il veut «scanner» le réseau. . Le ou les paquets UDP de multidiffusion seront reçus par les ordinateurs puisqu'ils ont déjà rejoint le groupe de multidiffusion 224.1.1.1, puis les ordinateurs peuvent commencer à communiquer avec le périphérique iOS maintenant que l'adresse IP est connue. Cependant, cela semble trop complexe et n'offre pas vraiment d'avantages. Le but de l'utilisation de la multidiffusion est d'économiser la bande passante, mais la quantité de bande passante enregistrée sera minuscule. À moins d'envoyer les mêmes données en quantités substantielles de l'appareil iOS à tous les ordinateurs, il n'y a simplement aucune raison de suivre cette voie. Quant à Bonjour, malheureusement, je ne peux pas commenter car je n'ai aucune expérience en la matière, mais je voterais quand même pour une diffusion simple afin de garder l'indépendance de la plate-forme ... enfin, du moins pour les ordinateurs. :)

Questions connexes