2010-01-08 168 views
0

我有這樣一種情況,即我有一個面向公衆的服務坐在互聯網上,我希望服務器能夠聯繫專門設計坐在正常家庭網絡中的嵌入式設備時需要。如何讓服務器通知客戶端在防火牆後

我知道設備可以輪詢服務器以獲取更新等,但1)服務器執行某些操作時,設備輪詢更新和2)之間會存在滯後時間(2)會有很多無用的流量(隨着時間的推移)生成。

有沒有人有任何建議如何做到這一點?我最初的想法是讓嵌入式設備使用UPNP在家庭路由器中嘗試生成端口轉發規則,然後將該端口註冊到服務器。然後,服務器可以生成一個HTTP請求到那個地址(http,這樣它將被路由等,而不會被防火牆阻止)。如果設備不能創建前向規則,那麼它將回到輪詢方法。

這聽起來是對的嗎?任何人有任何經驗可以與這類事情分享? (客戶端將是嵌入式Linux上的C++,服務器.NET)。

+0

坦率地說,它可能是不值得實施給多少人/公司不允許或以其他方式阻止UPNP的upnp的解決方案。 – Joe 2010-01-08 05:46:35

回答

0

很大程度上取決於您認爲將要使用多少個設備/網絡以及您對其軟件/配置有何種控制。

由於您在談論UPNP,它意味着將會有很多客戶端網絡 - 除非您可以控制路由器配置/硬件,否則您將在使UPNP解決方案可靠工作方面遇到很多問題。

此外,你提到的portforwarding,而是暗示嵌入式設備將不會有真正的IP地址。

你說你想用HTTP來避免它被阻塞,但是大多數防火牆/路由器等並不那麼聰明 - 阻塞完全是在端口號上完成的。如果您在NAT路由器後面有多個設備,則必須使用非標準端口來尋址設備,除非您實施控制器來根據HTTP內容中繼請求。

我能看到的唯一可行的解​​決方案是讓嵌入式設備連接到服務器並等待事件發生。

C.

+0

乾杯。我會爲此廢除UPNP - 仍然在設備上實現該功能,但將其作爲用戶\管理員的「高級選項」手動配置路由器上的端口轉發等。 – Rosstified 2010-01-11 05:25:49

相關問題