エリック、あなたの問題は、それが聞こえるようにされたように見えるよりもはるかに単純です。
この問題は10年、おそらく2年前から存在していました。ここで車輪の再発明をする必要はありません。
ポーリング/pingが悪いアイデアである理由
ISPが提供する動的IPのリース時間は変動する可能性がありますが、多くの場合、少なくとも24〜72時間かかります。1〜10 mごとにサーバーにpingを実行すると、リソースが大量に発生し、72時間でクライアントごとに4,320を超える無駄なHTTPリクエストが発生する可能性があります。各リクエストは約300バイト*4,320の無駄なhttpリクエストは、1.3MBの無駄な帯域幅に100万クライアントのターゲットクライアント数を掛けたものに相当します。毎月の無駄な帯域幅は約1.2TBです。これは無駄な帯域幅であり、アプリを実行して有用な情報を提供するために必要な他の帯域幅ではありません。
クライアントは、頻繁にpingを実行するよりも賢くする必要があります。むしろ、起動時にIPアドレスがDNSと一致するかどうかを確認し、IPが変更された場合にのみ、サーバーに通知を送信できるようにする必要があります。これにより、帯域幅とサーバーの処理要件が数千倍削減されます。
あなたが説明しているのはダイナミックDNSです
あなたが話しているのは「ダイナミックDNS」(テクノロジーの説明的な名前であり、SaaSソリューションを提供する1つの会社の名前でもあります)です。
ダイナミックDNSは、名前とIPアドレスの間のマッピングを非常に迅速に変更できるDNSサーバーです。通常、これは動的IPのみを提供するISPを使用するデバイスに役立ちます。動的IP上のルーター/サーバーのIPが変更されるたびに、動的DNSサーバーに変更が通知されます。
- ダイナミックDNSのデファクトスタンダードプロトコルは十分に文書化されています。ここから始めてください:DNS Update API、あなたが探している詳細はここにあると思います:DynDNSPerformUpdate。ルーターのハードウェアには通常、誰もが使用したいDynDNSクライアントが組み込まれているため、ほとんどの商用実装は同じプロトコルに非常に近いものです。
- ほとんどのルーター(安価なルーターでも)には、すでにダイナミックDNSクライアントが組み込まれています。(独自のソフトクライアントを作成することもできますが、クライアントはプライベートIPでNAT処理される可能性が高いため、ルーターが最も効率的な場所である可能性があります。それでも可能ですが、パブリックIP検出の帯域幅が増えます。 )。
- 「ダイナミックDNSjavaクライアント」をグーグルですばやく検索すると、次のような完全なソースプロジェクトが表示されます。JavaDynDNSクライアント(テストされていない、検索の能力を示しているだけです)
システムアーキテクチャに関するその他の考慮事項
IPクライアントマッピングが解決されたとしましょう。あなたはそれをすべて理解し、それは完璧に機能します、あなたは常に各クライアントのIPを知っています。次に、モバイルデバイスからクライアントにファイルを転送するための信頼性の高いシステムがありますか?私はノーと言うでしょう。
モバイルと家庭用コンピュータの両方で、Wi-Fi、セルラーデータ、場合によっては有線データなど、複数の接続タイプを使用できます。これらの各ネットワークには、異なるセキュリティシステムが導入されている場合があります。したがって、セルラーデータモバイルからホームルーターの背後にあるwifiラップトップへの接続は、同じwifiネットワーク上のラップトップに接続するwifiモバイルデバイスとは大きく異なります。
対処する物理ルーターファイアウォールがある場合があります。また、家庭用コンピュータでは、Windowsファイアウォールが有効になっている場合があります。ノートンインターネットセキュリティ、symantec、AVG、ゾーンアラームなどです。これらすべての潜在的なクライアントに対するファイアウォールの考慮事項を知っていますか?