Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как узнать имя ethernet адаптеров? 
:(
    Опции темы
Maksys
Дата 21.7.2006, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Future Splasher
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 15.6.2005
Где: Екатеринбург

Репутация: нет
Всего: 17



Хочу написать автоконфигуратор айпишников... чтоб ручками не прописывать всякую херню. все сделал, но вот имя сетевого интерфейса не знаю как узнать замучался в классах искать... кто знает помогите с поиском нужной мне либрарой? 


--------------------
 С уважением, BiMaWa™©.
user posted image
user posted image
PM MAIL ICQ Skype GTalk   Вверх
LSD
Дата 21.7.2006, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 19
Всего: 538



Код
Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
while(networkInterfaces.hasMoreElements())
{
  NetworkInterface networkInterface = networkInterfaces.nextElement();
  System.out.println("networkInterface.getDisplayName() = " + networkInterface.getDisplayName());
}
 


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Maksys
Дата 21.7.2006, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Future Splasher
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 15.6.2005
Где: Екатеринбург

Репутация: нет
Всего: 17



Спасиба башое, благодаря тебе вот что нашел.
Цитата(java guru)

Programmatic access to network parameters
http://java.sun.com/developer/JDCTechTips/2006/tt0513.html#1 

Приближается релиз Beta 2 версии Java SE 6.0, носящей кодовое название Mustang. Одной из особенностей, появившихся в версии Java SE 6.0, является предоставление доступа к параметрам сетевых настроек. На сегодняшний момент достаточно распространены системы, использующие одновременно несколько сетевых подключений, таких как проводные, беспроводные (802.11 a/b/g) и bluetooth. В предыдущих версиях J2SE имелась ограниченная поддержка доступа и получения информации о нескольких сетевых подключениях. В версии Java SE 6.0 данная поддержка была расширена. 

Класс NetworkInterface, появившийся в версии J2SE 1.4, предоставляет доступ к некоторой информации о сетевых адаптерах. Вы можете получить информацию о всех настроенных сетевых подключениях при помощи метода getNetworkInterfaces() класса NetworkInterface. Вы также можете получить информацию об одтельном сетевом подключении используя методы getByName() или getByInetAddress(). Затем вы можете вывести информацию о сетевом подключении, как, например его имя и адрес. Для просмотра информации, которую вы можете получить при помощи класса NetworkInterface, запустите следующую программу ListNets в среде J2SE 5.0:

   
Код


   import java.io.*;
   import java.net.*;
   import java.util.*;

   public class ListNets {
  
     public static void main(String args[])
         throws SocketException {
       Enumeration<NetworkInterface> nets =
         NetworkInterface.getNetworkInterfaces();
       for (NetworkInterface netint : Collections.list(nets)) {
         displayInterfaceInformation(netint);
       }
     }

     private static void displayInterfaceInformation(
         NetworkInterface netint) throws SocketException {
       System.out.printf(
           "Display name: %s%n", netint.getDisplayName());
       System.out.printf("Name: %s%n", netint.getName());
       Enumeration<InetAddress> inetAddresses = 
           netint.getInetAddresses();
       for (InetAddress inetAddress : Collections.list(
           inetAddresses)) {
       System.out.printf("InetAddress: %s%n", inetAddress);
       }
      System.out.printf("%n");
     }
   }  


В случае выполнения данной программы на типичной машине Microsoft Windows, на экран выведется примерно следующая информация, однако адреса и имена могут быть иными в зависимости от используемого вами оборудования и его настроек. 
Код



   Display name: MS TCP Loopback interface
   Name: lo
   InetAddress: /127.0.0.1

   Display name: Intel(R) PRO/100 VE Network Connection -
   Packet Scheduler Miniport
   Name: eth0

   Display name: RCA USB Cable Modem - Packet Scheduler Miniport
   Name: eth1
   InetAddress: /11.22.33.44


Для машин с ОС Linux у вас будут похожие параметры name, но отличные параметры Display name и возможно InetAddress. Используя методы isMCGlobal() и isMCSiteLocal() вы можете получить информацию, относящуюся к широковещательным сообщениям и типу адреса, а к типу самого сетевого интерфейса. Доступ к параметрам сетевого интерфейса теперь доступен из класса NetworkInterface в Java SE 6.0.

Сетевые интерфейсы имеют иерархическую организацию. В класс NetworkInterface в Java SE 6.0 включены два метода getParent() и getSubInterfaces(), которые относятся к иерархии сетевых интерфейсов. Метод getParent() возвращает родительский сетевой интерфейс для текущего интерфейса. Другими словами, если какой-либо интерфейс имеет родительский интерфейс, то возвращается не нулевое значение. Метод getSubInterfaces() соответственно возвращает дочерние интерфейсы. 

Вы можете узнать поднят ли сетевой интерфейс (те работает ли он) при помощи метода isUp(). Также существуют методы для определения типа сетевого интерфейса: так метод isLoopback() определяет является ли данный интерфейс петлевым, метод isPointToPoint() представляет ли интерфейс соединение точка-точка, а метод isVirtual() определяет является ли он виртуальным. 

Помимо основной информации вы также можете получить доступ к другим параметрам сетевого интерфейса как физический адрес устройства (в виде массива байтов) или максимальный размер пакета (MTU). 

Еще одним источником информации, доступным для каждого сетевого подключения является список под названием InterfaceAddress. Он предоставляет информацию о сетевом адресе, широковещательном адресе и адресе подсети для данного интерфейса. 

Ниже приводится обновленная версия программы ListNets, использующая все новые расширения класса NetworkInterface:
Код

   import java.io.*;
   import java.net.*;
   import java.util.*;
   
   public class ListNets {
     private static final Console console = System.console();
   
     public static void main(String args[]) throws 
         SocketException {
       Enumeration<NetworkInterface> nets =
         NetworkInterface.getNetworkInterfaces();
       for (NetworkInterface netint : Collections.list(nets)) {
         displayInterfaceInformation(netint);
       }
     }
   
     private static void displayInterfaceInformation(
         NetworkInterface netint) throws SocketException {
       console.printf("Display name: %s%n", 
           netint.getDisplayName());
       console.printf("Name: %s%n", netint.getName());
       Enumeration<InetAddress> inetAddresses = 
           netint.getInetAddresses();
       for (InetAddress inetAddress : Collections.list(
           inetAddresses)) {
         console.printf("InetAddress: %s%n", inetAddress);
       }
   
       console.printf("Parent: %s%n", netint.getParent());
       console.printf("Up? %s%n", netint.isUp());
       console.printf("Loopback? %s%n", netint.isLoopback());
       console.printf(
           "PointToPoint? %s%n", netint.isPointToPoint());
       console.printf(
           "Supports multicast? %s%n", netint.isVirtual());
       console.printf("Virtual? %s%n", netint.isVirtual());
       console.printf("Hardware address: %s%n",
         Arrays.toString(netint.getHardwareAddress()));
       console.printf("MTU: %s%n", netint.getMTU());
   
       List<InterfaceAddress> interfaceAddresses = 
           netint.getInterfaceAddresses();
       for (InterfaceAddress addr : interfaceAddresses) {
         console.printf(
             "InterfaceAddress: %s%n", addr.getAddress());
       }
       console.printf("%n");
       Enumeration<NetworkInterface> subInterfaces = 
           netint.getSubInterfaces();
       for (NetworkInterface networkInterface : Collections.list(
           subInterfaces)) {
         console.printf("%nSubInterface%n");
         displayInterfaceInformation(networkInterface);
       }
       console.printf("%n");
     }
   } 


Запустите данную версию в Java SE 6.0. Опять же результат вывода будет зависеть от конфигурации вашей системы. Также учтите, что некоторая информация может быть не доступна из-за соображений безопасности. 

   
Код

> java ListNets   
   Display name: MS TCP Loopback interface
   Name: lo
   InetAddress: /127.0.0.1
   Parent: null
   Up? true
   Loopback? true
   PointToPoint? false
   Supports multicast? false
   Virtual? false
   Hardware address: null
   MTU: 1520
   InterfaceAddress: /127.0.0.1
   Broadcast Address: /127.255.255.255
   Network Prefix Length: 8

   Display name: Intel(R) PRO/100 VE Network Connection -
   Packet Scheduler Miniport
   Name: eth0
   Parent: null
   Up? false
   Loopback? false
   PointToPoint? false
   Supports multicast? false
   Virtual? false
   Hardware address: [0, 1, 2, 3, 4, 5]
   MTU: 1500
   
   Display name: RCA USB Cable Modem - Packet Scheduler Miniport
   Name: eth1
   InetAddress: /11.22.33.44
   Parent: null
   Up? true
   Loopback? false
   PointToPoint? false
   Supports multicast? false
   Virtual? false
   Hardware address: [0, 2, 3, 4, 5, 6]
   MTU: 1500
   InterfaceAddress: /11.22.33.44
   Broadcast Address: /11.22.33.255
   Network Prefix Length: 22



Выведенные данные показывают, что интерфейс eth1 включен, соединен с сетью и имеет IP-адрес 11.22.33.44. Также показано, что интерфейс eth0 отключен. Интерфейс loopback – включен (данный интерфейс должен быть включен всегда).

Сравните результаты вывода данной программы с результатами, получаемыми при помощи утилиты ipconfig (с ключом /all). Вы должны получить достаточно похожие результаты. 

Для получения дополнительной информации по сетевому программированию на языке Java обращайтесь к разделу Custom Networking trail руководства Java Tutorial. 
 

Это сообщение отредактировал(а) Maksys - 21.7.2006, 20:51


--------------------
 С уважением, BiMaWa™©.
user posted image
user posted image
PM MAIL ICQ Skype GTalk   Вверх
Maksys
Дата 21.7.2006, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Future Splasher
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 15.6.2005
Где: Екатеринбург

Репутация: нет
Всего: 17



А еще вопросик....
А как узнать имя интерфейса которое мы указываем в "Сетевые подключения"? просто мне еще по этому имени к нему обращаться надо... 


--------------------
 С уважением, BiMaWa™©.
user posted image
user posted image
PM MAIL ICQ Skype GTalk   Вверх
LSD
Дата 22.7.2006, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 19
Всего: 538



Цитата(Maksys @  21.7.2006,  22:10 Найти цитируемый пост)
А как узнать имя интерфейса которое мы указываем в "Сетевые подключения"?

Не понял ты о чем? О физических устройствах? 


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Maksys
Дата 22.7.2006, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Future Splasher
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 15.6.2005
Где: Екатеринбург

Репутация: нет
Всего: 17



Цитата(LSD @  22.7.2006,  13:30 Найти цитируемый пост)
Не понял ты о чем? О физических устройствах? 

Когда втыкиваем сетевуху и сетами дрова появляется в Сетевых устройствах "Подключение по локальной сети" что типо этого со значкем оранжевым.. ввиде труб.. ну обычная сетевуха.. дык вот это имя можно переминовывать через f2 например.. а как это имя прочитать? из java проги? 


--------------------
 С уважением, BiMaWa™©.
user posted image
user posted image
PM MAIL ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Работа с сетью | Следующая тема »


 




[ Время генерации скрипта: 0.0890 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.