Как получить IP-адрес сервера и имя хоста в Java
В Java вы можете использовать InetAddress.getLocalHost() получить IP-адрес текущего Сервера, на котором выполняется приложение Java, и InetAddress.getHostName() получить имя хоста текущего имени сервера.
CrunchifyGetIPHostname.java
пакет ком . crunchify. учебные пособия ;
Импортировать Java. нетто. InetAddress ;
Импортировать Java. нетто. UnknownHostException ;
* @author Crunchify.com
общественности учебный класс CrunchifyGetIPHostname <
общественности статический недействительным main ( Строка [ ] аргументы ) <
InetAddress ip ;
строка имя хоста ;
IP знак равно InetAddress . getLocalHost ( ) ;
имя хоста знак равно ф. getHostName ( ) ;
Система. вне. println ( «Ваш текущий IP-адрес:» + ip ) ;
Система. вне. println ( Ваше текущее имя хоста: + имя хоста ) ;
> ловить ( UnknownHostException е ) <
эл . printStackTrace ( ) ;
Ваш текущий IP- адрес : appshah — mac / 192.168.0.1
Ваше текущее имя хоста : аппшах — макинтош
Другой должен прочитать:
- Java Iterator: Сценарий OutOfMemory (OOM)
- Резервное копирование данных Mac OS X Mail.app в Dropbox
На первый взгляд, InetAddress.getLocalHost() должен дать вам IP-адрес этого хоста. Проблема в том, что хост может иметь множество сетевых интерфейсов, и интерфейс может быть связан с несколькими IP-адресами. Кроме того, не все IP-адреса будут доступны с компьютера. Некоторые могут быть виртуальными устройствами, а другие могут быть IP-адресами частной сети.
ЧИТАТЬ ТАКЖЕ: Как реализовать алгоритм сортировки вставки в Java? Подробный пример
Это означает, что IP-адрес возвращается InetAddress.getLocalHost() не может быть правильным для использования.
Как вы можете справиться с этим?
- Одним из подходов является использование Java NetworkInterface.getNetworkInterfaces() API для получения всех известных сетевых интерфейсов на хосте, а затем итерации по адресам каждого NI.
- Другой подход заключается в том, чтобы (каким-то образом) получить внешне объявленное полное доменное имя хоста и использовать InetAddress.getByName() искать первичный IP-адрес. (Но как вы это получаете, и как вы справляетесь с балансировщиком нагрузки на основе DNS ?)
- Разновидностью предыдущего является получение предпочтительного полного доменного имени из файла конфигурации или параметра командной строки.
- Другой вариант — получить IP-адрес из файла конфигурации или параметра командной строки.
В итоге, InetAddress.getLocalHost() будет обычно работать, но вам может потребоваться предоставить альтернативный метод для случаев, когда ваш код выполняется в среде со «сложной» сетью.
Как узнать имя пользователя в Windows с помощью JS или Java Applet?
Как узнать имя пользователя в Windows с помощью JS или Java? Необходимо именно имя под которым залогинился пользователь.
Нужно записать это имя в переменную и идентифицировать пользователя в браузере.
ActiveX не предлагать.
Либо какие вообще существуют варианты реализации этого
- Вопрос задан более трёх лет назад
- 7618 просмотров
2 комментария
Оценить 2 комментария
Сергей Кузнецов @AgeSergey Автор вопроса
Этот вариант возвращает имя компьютера, а не имя пользователя
Решения вопроса 0
Ответы на вопрос 3

IT Specialist
Нужна более полная формулировка задачи. Начиная с ответа на вопрос «зачем»?
Правильно ли я понимаю что хочется получить в произвольном браузере имя (идентификатор учетной записи) пользователя, под которой пользователь зашел в свою операционную систему(запустил браузер)? При этом веб-сервер с рабочей машиной пользователя никак не связаны (например общей аутентификацией)?
Если да, то, скорее всего, общего решения нет. Ибо приложению, которое исполняется в браузере, в общем случае такая информация не нужна и, доступность такой информации является утечкой данных, что нехорошо с точки зрения безопасности.
Если же это корпоративная сеть с единой аутентификацией (Kerberos , MS Active Directory и т.п.) и хочется сделать «прозрачную» аутентификацию пользователя в приложении — то это решаемо. Смотреть в сторону GSSAPI, NTLM, «Integrated Windows authentication».
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
Web-developer
бред — в месте «идентифицировать пользователя в браузере».
имя в данном случае не может быть идентификатором.
Ответ написан более трёх лет назад
Сергей Кузнецов @AgeSergey Автор вопроса
Мне именно это нужно для корпоративной системы
Сергей Кузнецов: т.е. возможность подделки исключена? ок
JSP здесь определенно не при делах.
Можно попробовать в апплете вызвать String user = System.getenv(«USERNAME»); , но нужно понимать, что апплеты ограничены в рантайме своей песочницей и не могут выполнять небезопасный код. Читать тут docs.oracle.com/javase/tutorial/deployment/applet/. и тут docs.oracle.com/javase/tutorial/deployment/doingMo.
Ответ написан более трёх лет назад
Сергей Кузнецов @AgeSergey Автор вопроса
Этот вариант тоже к сожалению возвращает имя компьютера, а не пользователя
Я проверял – у меня возвращает имя пользователя под Windows. Да и вообще не поверю, что %USERNAME% под Windows будет возвращать HOSTNAME. Может имя пользователя совпадает в вашем случае? Это возможно при рабочем ActiveDirectory
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- Java
- +4 ещё
В чем ошибка Spring MVC 404?
- 1 подписчик
- 14 минут назад
- 2 просмотра
Как получить имя компьютера в локальной сети по IP?
socket.inetAddress.canonicalHostName должен возвращать имя компьютера, но я всеравно получаю IP адрес. Какие есть варианты решения этой проблемы? Я в сетях не очень разбираюсь. Изменено: Рабочий вариант, использование устаревшей библиотеки JCIFS 1.3.17
val nbtAddr = NbtAddress.getAllByAddress(ipAddress) val hostName = nbtAddr[0].hostName Log.v(DEBUG_TAG, "Host name - $hostName")
Решение: Работает с новой библиотекой jcifs-ng
val cifsContext = BaseContext(PropertyConfiguration(System.getProperties())).withGuestCrendentials() val hostName = cifsContext.nameServiceClient.getNbtAllByAddress(ipAddress)[0].name.name Log.v(DEBUG_TAG, "Host name - $hostName, IP - $ipAddress")
Java как получить имя компьютера
Привет всем!
Можно ли узнать из JavaScript сетевое имя компьютера и имя пользователя, под кем зашел юзер, и наш текущий IP-адрес.
Стоит такая задача: создать ActivDesktop и на рабочем столе выводить крупными буквами имя компьютера и т.д. чтобы пользователи не путались и сразу видели. Задача возникла в связи с тем, что это учебное заведения много классов и компьютеров, и существуют разные пользователи (admin, prepod, student и т.д.)
Ну или может есть другой метод?
09.11.07 16:57: Перенесено модератором из ‘Java’ — Blazkowicz
Re: Узнать имя пользователя и компа из JavaScript
| От: | DeniZNET |
| Дата: | 11.11.07 16:19 |
| Оценка: |
Вообщем, уже сам нашел следующий вариант.
Создал небольшой ActiveX, в котором определил три функции, как раз для каждого вопроса.
Затем этот ActiveX подцепил в html странице и добавил скрипт. А в скрипте обращаюсь к методам объекта, чтобы узнать нунжную мне информацию.
Получается вполне сносно. Только придется регистрировать ActiveX, но все равно на машины раскидываем образ поэтому особых проблем быть не должно.
Есть кто придумает оптимальнее буду рад!
Re: Узнать имя пользователя и компа из JavaScript
| От: | anonymous | http://denis.ibaev.name/ |
| Дата: | 19.11.07 14:04 | |
| Оценка: |
Здравствуйте, DeniZNET, Вы писали:
DZN>Можно ли узнать из JavaScript сетевое имя компьютера и имя пользователя, под кем зашел юзер, и наш текущий IP-адрес.
Имя машины и пользователя:
var network = new ActiveXObject("WScript.Network"); var computer = network.computerName; var user = network.userName;