2009-04-20 108 views

回答

22

這聽起來像你的程序正在監聽一個套接字。通常,當程序退出時,操作系統將關閉所有可能打開的套接字(包括偵聽套接字)。但是,對於監聽套接字,操作系統通常會在程序退出後將端口保留一段時間(幾分鐘),以便處理任何未完成的連接嘗試。您可能會注意到,如果您異常關閉程序,稍後再回來就會啓動。

如果您想避免延遲時間,可以使用setsockopt()來使用SO_REUSEADDR選項配置套接字。這告訴操作系統,你知道重新使用相同的地址是可以的,而且你不會遇到這個問題。

您可以使用ServerSocket.setReuseAddress(true)方法在Java中設置此選項。

2

當JVM進程結束時,操作系統應該自動處理這些事情。不過,在港口關閉之前可能會有短暫的延遲。

相關問題