0

我有一个案例,我在互联网上有一个面向公众的服务,我希望服务器能够在需要时联系位于正常家庭网络中的专门设计的嵌入式设备。

我知道设备可以轮询服务器以获取更新等,但是 1)在服务器执行某些操作与设备轮询更新之间会有延迟,以及 2)会产生大量无用的流量(随着时间的推移)。

有人对如何做到这一点有任何建议吗?我最初的想法是让嵌入式设备使用 UPNP 尝试在家庭路由器中生成端口转发规则,然后将该端口注册到服务器。然后,服务器可以向该地址生成一个 HTTP 请求(http 以便将其路由等而不会被防火墙等阻止)。如果设备无法创建转发规则,那么它将重新使用轮询方法。

这听起来对吗?任何人有任何经验可以分享这种事情吗?(客户端将是嵌入式 linux 上的 c++,服务器 .NET)。

4

1 回答 1

0

很大程度上取决于您认为这将与多少设备/网络一起使用,以及您对它们的软件/配置有什么控制权。

由于您在谈论 UPNP,这意味着将有很多客户端网络 - 除非您可以控制路由器配置/硬件,否则您将遇到很多问题让 UPNP 解决方案可靠地工作。

此外,您提到了端口转发,这表明嵌入式设备将没有真实的 IP 地址。

您说您想使用 HTTP 来避免它被阻止,但是大多数防火墙/路由器等并不那么聪明 - 阻止纯粹是在端口号上完成的。如果您在 NAT 路由器后面有多个设备,那么您将不得不使用非标准端口来寻址这些设备,除非您实现一个控制器来根据 HTTP 内容中继请求。

我能看到的唯一实用的解决方案是让嵌入式设备连接到服务器并等待事件发生。

C。

于 2010-01-08T10:45:06.870 回答