Javaアプリケーションの1つでソケット通信を使用しています。プログラムが異常終了を検出した場合、リスニングポートは閉じず、「ポートはすでに開いています」というメッセージが表示されるため、プログラムを開始できません。 Doとにかくこの問題に対処していますか?この問題を処理する一般的な方法は何ですか?プログラム終了時にポートを閉じるにはどうすればよいですか?
8
A
答えて
22
あなたのプログラムはソケットでリッスンしているようです。通常、プログラムが終了すると、OSは開いているソケット(リスニングソケットを含む)をすべて閉じます。しかし、リスニングソケットの場合、OSはプログラムが終了してからしばらくの間(数分)ポートを予約して、未処理の接続試行を処理できるようにします。プログラムが異常終了した場合は、後でもう一度やり直してください。
この遅延時間を避けたい場合は、setsockopt()
を使用してSO_REUSEADDRオプションを使用してソケットを構成できます。これは、OSに、同じアドレスを再利用することが問題ないことを知っていることを伝えます。この問題は発生しません。
このオプションは、ServerSocket.setReuseAddress(true)
メソッドを使用してJavaで設定できます。
2
オペレーティングシステムは、JVMプロセスが終了したときに自動的にそのような処理を行う必要があります。ただし、ポートが閉じられるまでには少し時間がかかることがあります。
2
Handling abnormal Java program exitsに記載されているように、実際に明示的な操作が必要な場合は、Runtime.addShutdownHook()メソッドで特別な処理を行うことができます。
4
あなたが
http://java.sun.com/j2se/1.4.2/docs/api/java/net/ServerSocket.html#setReuseAddress(boolean)
を参照してくださいソケットにSO_REUSEADDRフラグを設定したいです関連する問題
- 1. UWP C++アプリケーションをプログラムで終了または閉じるにはどうすればいいですか?
- 2. アンドロイドのアクティビティ終了時にソケットを閉じるにはどうすればいいですか?
- 3. プログラムでクラッシュダイアログを閉じるにはどうすればよいですか?
- 4. UWPアプリケーションをプログラムで終了または終了するにはどうすればよいですか? (Windows 10)
- 5. 終了時にこのJavaプログラムが閉じないのはなぜですか?
- 6. アプリケーション終了時にDelphiで匿名スレッドを終了するにはどうすればよいですか?
- 7. XCBで閉じるボタンでプログラムを終了するには
- 8. linuxがプログラム終了時にファイルディスクリプタを閉じるのを防ぐ
- 9. プロンプトでプログラムを終了するにはどうすればいいですか?
- 10. プログラム終了時の接続を確実に閉じる方法
- 11. 更新プログラムのチェーンの終了時にトリガーを起動するにはどうすればよいですか?
- 12. 正常に終了するかクラッシュするたびにプログラムがソケットを閉じるのを確認するにはどうすればよいですか?
- 13. メッセージダイアログをプログラムで閉じるにはどうすればいいですか?
- 14. セッションの終了時に閉じるポップアップ
- 15. 閉じるデバッグセッションの終了時にEntityManagerFactory
- 16. サーバーを終了するとポートが閉じない
- 17. HTML5再生終了時にビデオループを一時停止するにはどうすればよいですか?
- 18. バットファイルを閉じて5分後にプログラムを終了する
- 19. IRBセッションを終了せずにデバッガを終了するにはどうすればよいですか?
- 20. 「すべて終了」後にnode.jsスクリプトを終了するにはどうすればよいですか
- 21. 終了時に同じプログラムを実行するには?
- 22. jquery.jmslideshow.js終了するにはどうすれば終了するのですか
- 23. vimperatorでビューソースモードを終了するにはどうすればよいですか?
- 24. Androidでタスクを終了するにはどうすればよいですか?
- 25. プログラムを終了させないIllegalArgumentExceptionをスローするにはどうすればよいですか?
- 26. スタートアップフォームを閉じるとアプリが終了しないようにするにはどうすればよいですか?
- 27. 現在のブラウザウィンドウを閉じるとChromeデベロッパーツールが終了しないようにするにはどうすればよいですか?
- 28. JavaでGoogle App Engineインスタンスをプログラムで終了するにはどうすればよいですか?
- 29. プログラムで2.3以上でコールを終了するにはどうすればよいですか?
- 30. Python - 開いているポートを閉じるにはどうすればいいですか?