1

つまり、クライアント構成がゼロの(おそらくマルチセグメント化された)ローカルエリアネットワーク上のどこかで実行されているサーバーを確実に検出する方法

クライアントアプリケーションは、サーバーのIPアドレスを知らなくてもサーバーアプリケーションを見つける必要があります。ハブまたは他のスイッチングデバイスでセグメントに分割される可能性のあるローカルLANで動作する必要があります。

私はすでに実用的なソリューションを持っていますが、マルチセグメントネットワークでそれを機能させるのは少し面倒です。次のように機能します。

クライアントが起動すると、クライアントは独自のネットワークセグメントでUDPブロードキャストを送信します。サーバーが同じセグメントで実行されている場合、サーバーは問題なく動作します。サーバーは適切なメッセージで応答します。

サーバーとクライアントがUDPを転送しないハブ/スイッチで区切られたネットワークで実行されている場合(最も可能性の高いケース)、各セグメントでサーバーインスタンスを実行しており、TCPを介してクライアント要求を相互に転送します-ただし、これをサーバーインスタンス用に構成する必要があります(単純ですが、それでも技術サポートには苦労します)。これは、対処する必要のある主な問題です。5つまたは6つの別々のセグメントで実行されている何百ものクライアントがあるサイトがあります。

私が直面している問題:1。アプリケーションインストーラーがファイアウォールの適切なポートを有効にしているのに、これが正しく行われていないように見える状況に遭遇することがあります。2. UDPを転送しないハブ/スイッチドネットワークで複数のサーバーインスタンスを実行する(したがって、それらを構成および維持する)必要がある

最後に、Active Directoryやその他のルックアップサービスが構成されていない可能性のある最小限のWindowsネットワーク(XP / 2000 / Vista)でメンテナンスなしで機能するソリューションが必要です。

このためにランタイムのものにタグを付けたくありません-プレーンVC++またはDelphiでそれを行うことができるはずです。

商用アプリは通常どのようなアプローチを取りますか?SQL Serverがブロードキャスト呼び出しとNetBEUI呼び出しの組み合わせを使用していることを知っています(これについては間違っている可能性があります)。

前もって感謝します。

4

2 に答える 2

1

いくつかの用語の問題があります。

  • 「ネットワークセグメント」とは、「IPサブネット」を意味しているように見えます。同じネットワークセグメント上のデバイスは、同じIPブロードキャストを見ることができます。
  • 「ハブ/スイッチ」と言う場合、「IPルーター」を意味します。
  • 「UDPを転送しない」と言う場合、問題は実際には「IPブロードキャストを転送しない」です。

それを乗り越えたら、いくつかのオプションがあります。

  • 動的DNS更新を許可するDNSサーバーがある場合、サーバーはDNSに既知の名前で登録できます。おそらくRFC2782で指定されているSRVレコードを使用する必要があります。次に、クライアントはDNSルックアップを実行してサーバーを見つけます。
  • おそらく前のオプションのようにSRVレコードを使用して、組織のDNSでサーバーの既知の名前を静的に割り当てることができます。
  • ルーターがIPマルチキャストをサポートしている場合、サーバーはIPマルチキャストグループに参加できます。次に、クライアントは最初の検出要求をUDPパケットとして(事前に指定された)マルチキャストアドレスに送信します。
于 2009-07-28T05:55:46.827 に答える
0

ドメインサーバーをお持ちの場合は、小さなサービスを利用します。他のサービスと接続して配布ポイントとして使用できます。

なぜドメインサーバーなのか?その名前(DsGetDcName)を見つけるのは比較的簡単です。

他の選択肢には、DHCPサーバー、DNSサーバー、またはとにかく保守スタッフが記入する必要のある種類のものが含まれます。

于 2009-07-28T05:48:19.570 に答える