Pergunta

Eu tenho o caso onde eu tenho um serviço público enfrenta sentado na internet e eu gostaria que a capacidade para o servidor para contato especificamente projetar dispositivos embarcados que estão sentados em redes domésticas normais quando necessário.

Eu sei que os dispositivos podem consultar o servidor para obter atualizações etc, mas 1) Haverá um atraso entre o momento servidor faz algo, e as pesquisas de dispositivo para atualização e 2) Haverá um monte de tráfego inútil (ao longo do tempo) gerado.

Alguém tem alguma sugestão sobre como fazer isso? Meu embora inicial é ter os dispositivos embarcados usar o UPnP para tentar gerar uma regra para a frente da porta no roteador em casa, e em seguida, registrar que a porta para o servidor. O servidor pode, então, gerar uma solicitação HTTP para esse endereço (http modo que ele vai ficar encaminhado etc sem ser bloqueada por firewalls etc ao longo do caminho). Se o dispositivo não pode criar a regra para a frente, então ele irá resourt volta para o método de pesquisa.

Isso soa sobre a direita? Alguém tem alguma experiência que poderiam compartilhar com esse tipo de coisa? (Cliente será c ++ em Linux embarcado, servidor NET).

Foi útil?

Solução

Um lote depende de quantos dispositivos / redes que você acha que isso vai ser usado e com o que você tem controle sobre o seu software / configuração.

Uma vez que você está falando UPNP, isso implica que haverá muitas redes de clientes - a menos que você tem controle sobre o router config / hardware, você vai ter um monte de problemas para obter a solução UPNP ao trabalho de forma confiável.

Além disso, você menciona portforwarding que em vez sugere que os dispositivos embarcados não terá endereços IP real.

Você diz que pretende usar HTTP para evitar que seja bloqueado no entanto a maioria dos firewalls / routers etc não são inteligentes - bloqueio é feito puramente em números de porta. Se você tem vários dispositivos atrás de um roteador NAT, então você vai ter que usar portas não-padrão para lidar com os dispositivos a menos que você implementar um controlador para retransmitir as solicitações com base no conteúdo HTTP.

A única solução prática que eu posso ver é ter os dispositivos embarcados conectar ao servidor e esperar por um evento a ocorrer.

C.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top