2009-04-20 59 views

回答

22

这听起来像你的程序正在监听一个套接字。通常,当程序退出时,操作系统将关闭所有可能打开的套接字(包括侦听套接字)。但是,对于监听套接字,操作系统通常会在程序退出后将端口保留一段时间(几分钟),以便处理任何未完成的连接尝试。您可能会注意到,如果您异常关闭程序,稍后再回来就会启动。

如果您想避免延迟时间,可以使用setsockopt()来使用SO_REUSEADDR选项配置套接字。这告诉操作系统,你知道重新使用相同的地址是可以的,而且你不会遇到这个问题。

您可以使用ServerSocket.setReuseAddress(true)方法在Java中设置此选项。

2

当JVM进程结束时,操作系统应该自动处理这些事情。不过,在港口关闭之前可能会有短暂的延迟。

相关问题