[解決済み】利用可能なポートを見つけるには?
2022-04-10 17:57:31
質問
あるポートをリッスンするサーバを起動したいのですが、どうすればいいですか?明示的にポートを指定すれば動作します。しかし、私は自動的な方法でポートを見つけたいのです。この点で、私は2つの質問があります。
-
ポート番号のどの範囲で検索すればよいのでしょうか?(ポート12345、12346、12347を使用しましたが問題ありませんでした)。
-
あるポートが他のソフトウェアによって占有されていないかどうかを調べるにはどうすればよいですか?
解決方法は?
使用されるポートを気にしない場合は、ポート0を指定し ServerSocketコンストラクタ で、任意の空きポートでリッスンします。
ServerSocket s = new ServerSocket(0);
System.out.println("listening on port: " + s.getLocalPort());
もし、特定のポートのセットを使いたいのであれば、おそらく最も簡単な方法は、1つのポートが機能するまでそれらを繰り返し使用することでしょう。このようなものです。
public ServerSocket create(int[] ports) throws IOException {
for (int port : ports) {
try {
return new ServerSocket(port);
} catch (IOException ex) {
continue; // try next port
}
}
// if the program gets here, no port in the range was found
throw new IOException("no free port found");
}
のように使うことができる。
try {
ServerSocket s = create(new int[] { 3843, 4584, 4843 });
System.out.println("listening on port: " + s.getLocalPort());
} catch (IOException ex) {
System.err.println("no available ports");
}
関連
-
[解決済み] なぜJPAには@Transientアノテーションがあるのですか?
-
[解決済み] 型の不一致:ArrayListからListへの変換ができない
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] Linuxで特定のポートで動作しているプロセスを停止させる方法は?
-
[解決済み] Spring Bootアプリケーションにポートを設定する方法
-
[解決済み】WindowsでTCPまたはUDPポートをリッスンしているプロセスを見つけるにはどうすればよいですか?
-
[解決済み】ポート番号を指定したscp
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] javaで部分クラスを実装する方法
-
[解決済み] java.util.concurrent.ExecutionException 例外をどのように処理しますか?
-
[解決済み] 一部の入力ファイルが非推奨のAPIを使用またはオーバーライドしている
-
[解決済み] Java Swingで複数のボタンに対して複数のActionListenersを追加する方法
-
[解決済み] mavenのコンパイルに失敗するのはなぜですか?
-
[解決済み] HTTP ステータス 500 - サーブレットクラス pkg.coreServlet のインスタンス化に失敗しました。
-
[解決済み] Javaにおけるシンボリック参照
-
[解決済み] SubclipseとJavaHLのインストールで頭を悩ます
-
[解決済み] Eclipseでクラスとそれに対応するファイルの名前を変更する方法は?
-
[解決済み] Maven: assembly-pluginが全く実行されない