Мне нужно закрывать listening порт(например, 12000, который создается java методом serversocket.accept) в определённый момент(неизвестно когда он наступит). Вариант "убивать процесс, создавший порт" - не подходит, процесс должен оставаться живым. Вариант с таймером для serversocket.accept тоже не подходит - необходимо в общем случае держать до подключения, и лишь в конкретных ситуациях вырубать таковой порт. Подойдёт отключение методами java(необходимо учесть, что вырубать этот порт необходимо из отличного от создавшего такой сокет потока), либо через командную строку windows.
Чем плоха наивная реализация?
class ListenerThread extends Thread
{
private ServerSocket serverSocket;
public void enable() throws IOException
{
serverSocket = new ServerSocket(1337);
start();
}
public void disable() throws IOException
{
serverSocket.close();
interrupt();
}
@Override
public void run()
{
try
{
serverSocket.accept();
}
catch (IOException ex)
{
ex.printStackTrace();
}
}
}
netsh advfirewall firewall add rule name="Block12000" protocol=TCP dir=in localport=12000 action=block
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости