Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Работа с сетью > IP компьютера


Автор: NewProgr 19.5.2006, 21:03
Подскажите как узнать IP компа, на кот. запускается прога (программно). smile

Добавлено @ 21:10 
был код 

Код

ServerSocket s;
String str=s.getInetAddress().getHostAddress();


в итоге str= "0.0.0.0 "
Подскажите как быть? 

Автор: LSD 19.5.2006, 21:50
Код
InetAddress localHost = InetAddress.getLocalHost();
 

Автор: NewProgr 19.5.2006, 22:30
В этом случае будет получен адрес , равноценный "localhost" или реальный IP в локальной сети? 

Автор: LSD 19.5.2006, 22:42
Будет получен один из адресов (который не гарантируется), если ничего нет или установлен менеджер безопасности, то будет 127.0.0.1.
Получить все адреса можно так:
Код
Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
while(networkInterfaces.hasMoreElements())
{
  NetworkInterface networkInterface = networkInterfaces.nextElement();
  Enumeration<InetAddress> inetAddresses = networkInterface.getInetAddresses();
}
 

Автор: NewProgr 19.5.2006, 23:28
Цитата(LSD @  19.5.2006,  22:42 Найти цитируемый пост)
код Java
1:
2:
3:
4:
5:
6:

Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
while(networkInterfaces.hasMoreElements())
{
  NetworkInterface networkInterface = networkInterfaces.nextElement();
  Enumeration<InetAddress> inetAddresses = networkInterface.getInetAddresses();
}




  


JBuilderX 10.0 не пропускает строку 
Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
ошибка: cannot resolve symbol: variable Enumeration in class ...
хотя библиотеки подключены:
import java.net.*;
import java.util.*;   smile 
 

Автор: LSD 19.5.2006, 23:35
Какая версия JDK используется?

Просто там используются генерики, и JBuilderX о них не знает. Сделай так:
Код
Enumeration networkInterfaces = NetworkInterface.getNetworkInterfaces();
while(networkInterfaces.hasMoreElements())
{
  NetworkInterface networkInterface = (NetworkInterface) networkInterfaces.nextElement();
  Enumeration inetAddresses = networkInterface.getInetAddresses();
  while(inetAddresses.hasMoreElements())
    System.out.println("ip = " + inetAddresses.nextElement());
}
 

Автор: NewProgr 20.5.2006, 10:34
JDK1.4.
Теперь все заработало. Большое спасибо. smile  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)