1

解決しなければならない新しい問題のためにあなたに手紙を書いています、そして私は今、あまりにも長い間壁に頭をぶつけてきました。

基本的に、私は次のことを処理できるアプリケーションを作成する必要があります。

ユーザーがアプリを起動すると、サブネットにブロードキャストが送信され、そこにあるすべてのサーバーの応答がIP(およびいくつかの追加情報)とともに受信されます。次に、ユーザーは接続するサーバーを選択できます。

サブネットを識別し、UDPでブロードキャストし、別のサーバーアプリケーションにそれを受信させて応答を返すだけで、それを機能させるのは非常に簡単です。問題はこれらの制限にあり、私はそれを考慮に入れる必要があります:

  • ほとんどの場合、ネットワーク内のサーバーマシンにもクライアントが存在します。つまり、アプリケーションはすべてのマシンに存在すると想定できます。すべてのマシンでリスナーを実行する必要があり、すべてのマシンでサーバーを選択するためのGUIを起動できます。
  • ファイアウォールに追加できる例外は1つだけです。これは、ブロードキャストの送信、ブロードキャストの受信、応答の送信、および応答の受信の両方を処理する例外です。
  • また、Windowsサービスを1つだけ追加する必要があります
  • サーバーマシンでは、リスナーはWindowsサービスとして実行する必要があるため、ユーザーは気付かないでしょう。また、応答がクライアントに返送されることにユーザーが気付くこともありません。
  • クライアントマシンで、ユーザーはアプリケーションを起動できます。アプリケーションは、ブロードキャストを送信するようにアプリケーションに通知し、すべてのサーバー応答を取得するため、ユーザーは接続するものを1つ選択できます。
  • サーバーを選択するためにユーザーが起動するアプリケーション以外に、ユーザーとの対話は一切行わないでください。ポップアップでさえなく、ファイアウォールを通過するトラフィックを許可するようにユーザーに要求します-すべて自動的に行われる必要があります
  • Win XP、Win Vista、Win7の間で動作する必要があります。

自分に制約が多すぎるかどうかはわかりませんが、これらの要件でアプリケーションを作成できることを心から望んでいます。

私にはいくつかのアイデアがあります-私はそれを行う方法を理解する必要があります:

  • すべてを1つのアプリケーションにして、ファイアウォールの例外リストに追加して、サーバーとクライアントマシンの両方のトラフィックを処理する必要がありますか?
  • ファイアウォールにカスタム例外を追加して、特定のポートでUDPトラフィックを許可し、それを通過するすべてのトラフィックを許可する必要がありますか?
  • それを管理するための3番目のより良いオプションはありますか?
  • クライアントマシンとサーバーマシンの両方でサービスを実行しても問題ありません。しかし、ブロードキャストの送信/受信と応答の送信/受信の両方を処理するように、すべてを処理できますか?また、ネットワーク上のサーバーに関する情報をサービスから抽出する方法はありますか?

たくさんあることは承知していますが、あなたが私を助けてくれることを心から願っています。

私が十分に明確でなかった場合、またはさらに説明が必要な場合は、私に知らせてください。

私はC#.Netでコーディングしており、.Netフレームワークから必要なものをすべて利用できます。この機能を実装するとすぐに

ではごきげんよう

/サギ

4

2 に答える 2

1

1台のマシンをマスターサーバーとして指定すると、ピアツーピアネットワークの問題の種類は簡単になります。すべてのサブサーバーが接続できる既知の名前を付けて、可用性を公開(および撤回)できるようにする必要があります。その後、クライアントは同じサーバーにクエリリクエストを送信し、既知のサーバーのリストを取得できます。

これにより、ファイアウォールの問題も解決できます。マスターサーバーがポート80でリッスンしている可能性があります。

フレームワークでサポートされているp2pソリューションについては、System.Net.PeerToPeer名前空間を調べてください。

于 2010-03-30T14:47:37.983 に答える
0

たぶん、UPnPサーバーとクライアントがあなたの問題の解決策かもしれませんか?

于 2010-03-30T14:53:09.350 に答える