Подтвердить что ты не робот

Как создать Java-сокет, который является только localhost?

У меня есть Java-сервер, который открывает сокет, используя ServerSocket (используя Thrift с ним). На этом сервере есть клиент на локальном компьютере в Obj-c, который взаимодействует с сервером Java. Все происходит на локальном хосте. Сейчас java-сервер также виден в сети, я хотел бы, чтобы java-сервер был доступен только на локальном хосте. В противном случае это потенциальная уязвимость в системе безопасности, и это выводит пользователей из сети, когда их брандмауэр предупреждает их.

Я попытался создать сокет сервера, используя InetSocketAddress ('localhost', 9090), но это, кажется, не имеет никакого эффекта. Как я могу ограничить эту вещь на localhost?

4b9b3361

Ответ 2

Try

new ServerSocket(9090, 0, InetAddress.getByName("localhost"))

Последний параметр для конструктора указывает, к какому адресу следует привязать прослушивающий сокет.

Ответ 3

Позвольте мне перекликаться с альтернативным решением, которое принимает только на loopback-устройстве. Все остальные решения "localhost" позволят Java выбрать интерфейс.

new ServerSocket(9090, 0, InetAddress.getLoopbackAddress());

Это доступно с Java 7 и даже не бросает UnknownHostException

Ответ 4

new ServerSocket(9090, 0, InetAddress.getByName(null));