サーバーがファイアウォールの背後にクライアントに通知できるようにする方法

StackOverflow https://stackoverflow.com/questions/2025470

質問

私は公共の対面サービス、インターネット上に座って、私が特に必要なときに、通常のホームネットワークに座っている組み込み機器を設計連絡するサーバーの能力を希望を持っている場合があります。

私は、デバイスがアップデートなどを取得するためにサーバーをポーリングすることができますが、1)サーバーが何かして、更新のためのデバイスのポーリングと2)の無駄なトラフィックの多くがあるでしょうするときの間にタイムラグがあるであろうことを知っている(時間の経過)生成されます。

誰もがこれを行う方法上の任意の提案を持っていますか?私の最初は、しかし、組込み機器がしようとすると、家庭用ルータのポートフォワードルールを生成し、サーバーにそのポートを登録するUPNPを使用することです。サーバは、そのアドレス(HTTP、それが道に沿って、ファイアウォールなどによってブロックされることなく、などのルーティングされますように)へのHTTPリクエストを生成することができます。デバイスが前方にルールを作成するカント場合、それは、ポーリング方式に戻っresourtされます。

権利については、この音をしていますか?誰もが、彼らはこの種のものと共有する可能性の経験がありますか? (クライアントは、組込みLinux、サーバ.NETにC ++であろう)。

役に立ちましたか?

解決

多くは、あなたがこれを一緒に使用することになるだろうし、彼らのソフトウェア/コンフィギュレーションを超えるものをコントロールあなたが持っていると思いますどのように多くのデバイス/ネットワークに依存します。

あなたはUPNPの話をしているので、それはクライアントネットワークの多くがあることを意味します - あなたは、ルータの設定/ハードウェアを管理している場合を除き、あなたは問題が確実に動作するUPNPソリューションを得ることの多くを持っているつもりです。

また、あなたではなく、組み込みデバイスは、実際のIPアドレスを持っていないであろうことを示唆しているポートフォワーディングを言及します。

ただし、ファイアウォール/ルータなど大多数は、そのスマートではありませんあなたはそれがブロックされるのを避けるためにHTTPを使用したいと言う - ブロッキングは、ポート番号に純粋に行われます。あなたがNATルータの背後にある複数のデバイスを持っている場合は、あなたがHTTPコンテンツに基づいて要求を中継するコントローラを実装していない限り、デバイスに対応するために非標準ポートを使用する必要があります。

私は組み込み機器を持っている見ることができる唯一の現実的な解決策は、サーバーに接続し、イベントが発生するのを待ちます。

C

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top