如何让服务器通知防火墙后面的客户端

时间:2010-01-08 04:19:26

标签: .net http client-server upnp portforwarding

我的情况是我在互联网上有一个面向公众的服务,我希望服务器能够在需要时专门联系设计在普通家庭网络中的嵌入式设备。

我知道设备可以轮询服务器以获取更新等但是1)服务器执行操作和设备轮询更新之间会有一段时间,并且2)会有很多无用的流量(随着时间的推移)生成。

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

这听起来对吗?任何人都有与他们分享此类事物的经验吗? (客户端将是嵌入式Linux上的c ++,服务器.NET)。

1 个答案:

答案 0 :(得分:0)

很大程度上取决于您认为将使用多少设备/网络以及您对其软件/配置的控制。

由于您正在谈论UPNP,这意味着将有许多客户端网络 - 除非您可以控制路由器配置/硬件,否则您将面临很多问题,使UPNP解决方案可靠地运行。

另外,你提到了portforwarding,而不是暗示嵌入式设备没有真正的IP地址。

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

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

下进行。