.NET を使用して Opera unite like 機能を構築するには?
Opera ブラウザを実行して Opera Unite を有効にすると、Web 上でデスクトップが共有され、静的 IP なしでインターネット経由でアクセスできるようになります。これはどのように機能しますか?
独自の DNS サーバーを実行する必要があります。また、ユーザーがブラウザーを開いてログインするたびに、ユーザーの現在の IP アドレスをサーバーに送信し、ローカル DNS を更新する必要があります。サブドメイン (desktop.operaunitecom) しかないため、誰かがあなたの URL にアクセスするたびに、最初に Operaunite DNS サーバーに移動し、そこから IP アドレスを取得します。ユーザーのセッションが終了したら、DNS エントリを削除する必要があります。これは可能な解決策になる可能性があります。
動的 IP を静的 DNS 名にマップする必要があります。使いやすいソリューションの1 つは、DynDNS サービスです。これらの場合、現在の IP アドレスを特定の dns 名に単純にマップする小さなクライアント プログラム (または、優れたルーターには dyn dns クライアントが既に実装されています) を取得します。
これを行った後、それをどのように変化させるかによって異なります。- 動的 IP を持つ 2 つのクライアントを接続しますか?
最初のケースでは、あなたのマスターは、常に彼の現在の IP アドレスを dns 名にマップするようにする方法です。ルーターでは、ポート転送が必要な場合があり、クライアントはリバース モードが有効になっている vnc クライアントを取得します。これにより、全員がマスターへの接続を確立し、クライアント サイトを変更することなくデスクトップを共有できます。マスター サイトでのみ何かを行う必要があります (dynDns とポート転送)。
2 番目のケースでは、もう少し複雑です。これで、互いに接続したい 2 つの動的 IP が得られました。これは通常、ある種のメディエーターを通じて行われます。両方のマシンが何らかのマスターに接続することを意味します (何らかの DNS 名を介して到達可能)。これで、両方のマシンがマスターへの双方向接続を確立し、マスターは単純に最初のクライアントからデータを取得して 2 番目のクライアントに転送し、その逆も同様です。マスターからすべての負担を軽減するために、最初のステップでマスターがクライアント A の IP アドレスを B に、またはその逆に送信することが可能です。次に、最初のステップで、両方が互いに直接接続しようとします。この方法は UDP ホール パンチングと呼ばれ、常に機能するとは限らず、代わりにマスターを使用するフォールバックにつながります。
2 番目のアプローチを使用している 2 つの例は、Skypeとjoin.meです。
これらすべての手法は、.Net では何もする必要はありません。それは、イーサネット、TCP/IP、インターネットなどに関する純粋な知識です。そして、この低レベルの領域で多くの作業を行わなければならないという事実のために、C# はこのタスクを達成するための理想的なフレームワークではないと思います。GUI をすべての最後のステップとして配置することもできますが、舞台裏での実際の作業には、使用しているプログラミング言語からほとんど独立した、まともなネットワークのノウハウが必要です。