#java #networking
#java #сеть
Вопрос:
Я использовал InetAddress как массив. Однако, если я не использую array, я могу распечатать каждый сетевой интерфейс в цикле. Хотя я повторяю массив InetAddress, код ничего не показывает. Есть ли фундаментальная проблема? Я очень новичок в мире сетей на Java.
import java.io.*;
import java.net.*;
import java.util.*;
public class Interface_Enumeration_Concept {
InetAddress[] address;
public void GetInterfaces(){
try {
Enumeration interfaces = NetworkInterface.getNetworkInterfaces();
while (interfaces.hasMoreElements()) {
NetworkInterface intf = (NetworkInterface) interfaces.nextElement();
Enumeration addresses = intf.getInetAddresses();
int i=0;
while (addresses.hasMoreElements()){
address[i] = (InetAddress) addresses.nextElement();
System.out.println(address[i]);
i ;
}
}
}catch(SocketException exp){
exp.getCause();
}
}
public static void main(String[] args) {
Interface_Enumeration_Concept objects = new Interface_Enumeration_Concept();
objects.GetInterfaces();
}
}
Ответ №1:
SocketException
Происходит. Вы не печатаете его и ничего с ним не делаете, поэтому впоследствии ничего не происходит, и вы его не видите. Если вместо exp.getCause()
(который ничего не делает) вы сделаете что-то вроде exp.printStackTrace()
, вы увидите проблему.
Комментарии:
1. И когда вы это исправите, вы получите a,
NullPointerException
потому что вы не инициализировалиaddress
.2. Да, у меня нет. В книге Питта «Основы сетевого взаимодействия на Java». Он не инициализировал InetAddress своим конструктором . Просто объявил его и ввел значение. это сработало