Избегайте всплывающих окон Windows Firewall с сокетами на локальном хосте

Я написал простое Java-приложение, которое взаимодействует с несколькими его экземплярами с помощью сокетов. Первый экземпляр автоматически берет на себя роль сервера, прослушивающего определенный порт, и все последующие экземпляры подключаются к нему.

Проблема, с которой я сталкиваюсь, заключается в том, что брандмауэр Windows выскакивает, спрашивая меня, хочу ли я разблокировать программу от "принятия входящих сетевых подключений". Дело в том, что не имеет значения, если вы оставите приложение заблокированным, потому что экземпляры приложения всегда находятся на одном компьютере, поэтому оно всегда будет работать.

Можно ли как-то сообщить Windows, что я даже не хочу принимать входящие сетевые подключения?

Ответ 1

Используйте конструктор с тремя параметрами класса ServerSocket, чтобы указать IP-адрес, а также сервер, который он должен прослушивать. Таким образом, вы можете ограничить сервер прослушиванием только 127.0.0.1, в отличие от значения по умолчанию 0.0.0.0. См. Этот связанный вопрос, для более подробной информации.

Для получения локального адреса предпочтительно использовать InetAddress.getByName(null).