0

LAN ベースのデータベース アプリケーションを開発しています。これには、データベースを格納する中央の「サーバー」アプリと、データベースにアクセスする多くの「クライアント」アプリケーションが含まれます。

「サーバー」は、GET および POST 要求に応答する単純な C# ベースの HTTP サーバーになります。ただし、ネットワーク上のどのラップトップからでも実行できるように設計されているため、IP アドレスを知らなくてもクライアントとサーバー間の接続を確立する方法が気になります。

192.168.0.0 から 192.168.0.255 までのすべての IP アドレスに ping を実行し、応答したものをテストして、自分のサーバーがあるかどうかを確認できると思います。しかし、他に良い方法がない場合にのみそうします。助言がありますか?

4

2 に答える 2

1

これらの種類の検出サービスの多くは、サブネット ブロードキャスト アドレス (192.168.0.0/24 の場合は 192.168.0.255) に何らかのビーコンを送信するか、マルチキャスト アドレスにビーコンを送信することによって実行されます。

マルチキャストは、適切に構成されたネットワークでは、ホストがサブネット間でもサービスを見つけることができるため、特に興味深いものです。通常、ルーターとスイッチはサブネット境界を越えてブロードキャスト パケットを転送しませんが、マルチキャスト パケットは転送します。

ビーコンには、サービスが実行されているポート、サービスの種類、サービスの使用を開始するために必要なものなどの情報が含まれます。

于 2012-04-06T01:10:13.547 に答える
1

正しい方向に導くには、指定したポートでデータベース サーバーを実行する必要があります。次に、クライアント (データベースに接続する必要があるシステム) からそのポートにブロードキャストを送信します。データベース サーバーがこれを受信すると、送信者に応答できるようになり、ハンドシェイクが発生します。

もちろん、データベース サーバーの信頼性を検証する必要があります (心配しない限り、安全にするためです)。これは、データベースに入力する必要がある 4 つの数字をクライアントに表示させるのと同じくらい簡単です。これにより、データベースは 4 つの数字をクライアントに送り返し、クライアントが正しいコンピュータであることを証明できます (iTunes リモートの仕組み)、または証明書を使用できます (ただし、これは複雑すぎて、私が正しく説明するにはトピックがありません)。

その後、2 台のコンピューターが互いの IP を認識し、準備完了です。

于 2012-04-06T01:10:51.030 に答える