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;
Как получить 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-адресами частной сети.
ЧИТАТЬ ТАКЖЕ: Что такое Daemon Thread в Java? Пример прилагается
Это означает, что IP-адрес возвращается InetAddress.getLocalHost() не может быть правильным для использования.
Как вы можете справиться с этим?
- Одним из подходов является использование Java NetworkInterface.getNetworkInterfaces() API для получения всех известных сетевых интерфейсов на хосте, а затем итерации по адресам каждого NI.
- Другой подход заключается в том, чтобы (каким-то образом) получить внешне объявленное полное доменное имя хоста и использовать InetAddress.getByName() искать первичный IP-адрес. (Но как вы это получаете, и как вы справляетесь с балансировщиком нагрузки на основе DNS ?)
- Разновидностью предыдущего является получение предпочтительного полного доменного имени из файла конфигурации или параметра командной строки.
- Другой вариант — получить IP-адрес из файла конфигурации или параметра командной строки.
В итоге, InetAddress.getLocalHost() будет обычно работать, но вам может потребоваться предоставить альтернативный метод для случаев, когда ваш код выполняется в среде со «сложной» сетью.
Как получить имя компьютера в локальной сети по 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")
Inet Address. Get All ByName(String) Метод
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Учитывая имя узла, возвращает массив его IP-адресов на основе настроенной службы имен в системе.
[Android.Runtime.Register("getAllByName", "(Ljava/lang/String;)[Ljava/net/InetAddress;", "")] public static Java.Net.InetAddress[]? GetAllByName (string? host);
[] static member GetAllByName : string -> Java.Net.InetAddress[]
Параметры
имя узла или null .
Возвращаемое значение
массив всех IP-адресов для заданного имени узла.
Исключения
Значение , если поиск адреса завершается ошибкой.
Комментарии
Учитывая имя узла, возвращает массив его IP-адресов на основе настроенной службы имен в системе.
Имя узла может быть именем компьютера, например » java.sun.com «, или текстовым представлением его IP-адреса. Если указан литеральный IP-адрес, проверяется только допустимость формата адреса.
Для host адреса IPv6, указанного в литерале, принимается либо форма, определенная в RFC 2732, либо литеральный формат IPv6-адреса, определенный в RFC 2373. Литеральный IPv6-адрес также может быть квалифицирован путем добавления идентификатора зоны с заданной областью или scope_id. Синтаксис и использование scope_ids описаны здесь.
Если узел является null , InetAddress то возвращается адрес интерфейса замыкания на себя. См. rfc 3330 section 2 и RFC 2373 , раздел 2.5.3.
Если диспетчер безопасности host не равен null и host.length() не равен нулю, метод диспетчера checkConnect безопасности вызывается с именем узла и -1 в качестве аргументов, чтобы узнать, разрешена ли операция.
Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License Creative Commons 2.5 Attribution License.