Question

J'ai le cas où j'ai un service public face assis sur Internet et je souhaite que la capacité du serveur à contacter la conception spécifiquement les systèmes embarqués qui sont assis dans les réseaux domestiques normaux lorsque cela est nécessaire.

Je sais que les appareils peuvent interroger le serveur pour obtenir les mises à jour, mais 1) Il y aura un décalage entre le moment où le serveur fait quelque chose, et les sondages de l'appareil pour la mise à jour et 2) Il y aura beaucoup de trafic inutile (au fil du temps) généré.

Quelqu'un at-il des suggestions sur la façon de le faire? Mon premier est bien d'avoir les dispositifs embarqués utilisent UPNP pour essayer de générer un port règle en avant dans le routeur domestique, puis enregistrez ce port au serveur. Le serveur peut alors générer une requête HTTP à cette adresse (http afin qu'il routés etc sans être bloqué par les pare-feu, etc. le long du chemin). Si l'appareil ne peut pas créer la règle avant, puis il resourt revenir au mode de scrutin.

Est-ce son à peu près juste? Tout le monde a une expérience qu'ils pourraient partager avec ce genre de chose? (Client sera c ++ sur Linux embarqué, .NET du serveur).

Était-ce utile?

La solution

Beaucoup dépend du nombre de périphériques / réseaux que vous pensez que cela va être utilisé avec et quel contrôle vous avez sur leur logiciel / configuration.

Puisque vous parlez UPNP, cela implique qu'il y aura beaucoup de réseaux clients - à moins que vous avez le contrôle sur la configuration du routeur / matériel, vous allez avoir beaucoup de problèmes pour obtenir la solution UPNP pour fonctionner de manière fiable.

, vous mentionnez également portforwarding ce qui suggère plutôt que les dispositifs embarqués ne seront pas des adresses IP réelles.

Vous dites que vous voulez utiliser HTTP pour éviter d'être bloqué mais la majorité des pare-feu / routeurs etc ne sont pas si intelligents - le blocage se fait uniquement sur les numéros de port. Si vous avez plusieurs périphériques derrière un routeur NAT, alors vous devrez utiliser des ports non standards pour répondre aux appareils à moins que vous mettre en œuvre un contrôleur pour relayer les demandes en fonction du contenu HTTP.

La seule solution pratique, je peux voir est d'avoir les périphériques embarqués se connecter au serveur et attendez qu'un événement se produise.

C.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top