java强制关闭打开的socket
在安卓应用程序中,有时应用程序会被强制关闭。但是,服务器socket仍在使用中。所以,下次我启动应用程序时,它会告诉我错误
java.net.BindException: bind failed: EADDRINUSE (Address already in use)
我启动socket的代码是
ServerSocket serverSocket;
serverSocket = new ServerSocket(); // <-- create an unbound socket first
serverSocket.setReuseAddress(true);
serverSocket.bind(new InetSocketAddress(SERVER_PORT))
我希望确保,当我的电脑重新启动时。。它应该重新使用插座
# 1 楼答案
我猜你的应用程序是因为一个无法控制的异常而被迫关闭的。理想情况下,你应该解决任何迫使你的应用关闭的问题,而不是寻找解决办法
在任何情况下,都应该始终使用
finally
块关闭资源,这样即使出现异常,它们也会关闭或者更好,如果可能的话,使用try with resources(Java 7+):
请注意,在没有root权限的情况下,无法强制关闭属于另一个进程的现有套接字