Избегайте всплывающих окон Windows Firewall с сокетами на локальном хосте
Я написал простое Java-приложение, которое взаимодействует с несколькими его экземплярами с помощью сокетов. Первый экземпляр автоматически берет на себя роль сервера, прослушивающего определенный порт, и все последующие экземпляры подключаются к нему.
Проблема, с которой я сталкиваюсь, заключается в том, что брандмауэр Windows выскакивает, спрашивая меня, хочу ли я разблокировать программу от "принятия входящих сетевых подключений". Дело в том, что не имеет значения, если вы оставите приложение заблокированным, потому что экземпляры приложения всегда находятся на одном компьютере, поэтому оно всегда будет работать.
Можно ли как-то сообщить Windows, что я даже не хочу принимать входящие сетевые подключения?
Ответы
Ответ 1
Используйте конструктор с тремя параметрами класса ServerSocket, чтобы указать IP-адрес, а также сервер, который он должен прослушивать. Таким образом, вы можете ограничить сервер прослушиванием только 127.0.0.1, в отличие от значения по умолчанию 0.0.0.0. См. Этот связанный вопрос, для более подробной информации.
Для получения локального адреса предпочтительно использовать InetAddress.getByName(null)
.