1

クライアント/サーバーアーキテクチャを備え、LAN経由でのみ使用されるソフトウェアアプリケーションがあります。したがって、これを実装するために(明確に定義されたプロトコルに基づいて)Javaソケットプログラミングを使用する予定です。

サーバーセットアップ(要求をポートでリッスンするバックグラウンドプロセスとしてサーバーをセットアップする)とクライアントセットアップの2種類のセットアップがあります。これらは両方とも、ユーザーがその特定のコンピューター上でソフトウェアをどのように動作させたいかに応じて、ユーザーが手動で呼び出すことができます。

ここで、サーバーアプリケーションの場合、セットアッププロセス中に、ポート番号などの特定の詳細を指定します。したがって、ここで実行したいのは、そのマシンでポート番号が固定されたら、ソフトウェアアプリケーションが存在する限り(およびサーバーのダウンタイムやアップタイムに関係なく)、他のサードパーティが存在しないことを確認することです。アプリケーション/製品はそのポートを使用します。

現在、コード(Java)を介してこれを行う方法はありますか?このアプリケーションは常に管理者として実行する必要はないため、Windowsレジストリにアクセスする権限がない可能性があると想定します。

問題の説明について明確になっていることを願っています。もちろん、ご不明な点がございましたら、お気軽にお問い合わせください。さらに詳しく説明させていただきます。

この問題に取り組むための提案を楽しみにしています。

4

3 に答える 3

5

あなたは単にできません...

プログラムがダウンしているとき、他のプログラムはあなたのポートを開くことができ、プログラムが開始するとそれを使用することを防ぐことができます...

于 2012-07-18T12:55:22.370 に答える
1

これを回避する 1 つの方法は、サービス ディスカバリを使用することです。これを実装するには多くの方法があります。

それらに共通しているのは、実際に使用されているポートに関係なく、名前または ID でサービスを検索して接続できることです。実行するたびに異なる可能性があります。このようにして、アプリケーションは任意の空きポートを使用でき、ポートを予約する必要はありません (または 1 つのホストでのみ実行することさえできます)。

于 2012-07-18T13:03:37.077 に答える
0

https://github.com/ProfessorEugene/PortReserve (java 1.6+)を試してみてください - 完全な開示、私は著者です。

于 2015-03-24T01:30:43.593 に答える