28 Mayıs 2019 Salı

NetworkInterface Sınıfı

Giriş
Şu satırı dahil ederiz.
import java.net.NetworkInterface;
C#'taki NetworkInterface Sınıfı ile aynı işlevi görür. Bu sınıf ethernet kartına erişim için 2 temel metod sunar. Bunlar
1. getByInetAddress() ve
2. getInterfaceAddresses()

getByInetAddress metodu
IP adresine sahip arayüzü döner. Eğer bu adrese sahip ethernet kartı yoksa ya da ethernet kartı etkin değilse SocketException fırlatır.
Örnek
Şöyle yaparız
InetAddress ip;
try {
  ip = InetAddress.getLocalHost();

  NetworkInterface network = NetworkInterface.getByInetAddress(ip);
  ...
} 
catch (UnknownHostException e) {
  e.printStackTrace();
} 
catch (SocketException e) {
  e.printStackTrace();
}
getDisplayName metodu
Şöyle yaparız.
NetworkInterface netint = ...;
out.printf("Display name: %s\n", netint.getDisplayName());
out.printf("Name: %s\n", netint.getName());
Enumeration<InetAddress> inetAddresses = netint.getInetAddresses();
for (InetAddress inetAddress : Collections.list(inetAddresses)) {
  out.printf("InetAddress: %s\n", inetAddress);
}
getHardwareAddress metodu
Arayüze ait MAC adresini döner. Şöyle yaparız.
byte[] mac = networkInterface.getHardwareAddress();
getInetAddresses metodu
Arayüze ait IPv4 ve IPv6 adreslerini karışık olarak verir. Enumeration döner. Şöyle yaparız.
InetAddress myAddr = ...;
Enumeration<InetAddress> inAddrs = networkInterface.getInetAddresses();
while (inAddrs.hasMoreElements()) {
  InetAddress inAddr = inAddrs.nextElement();
  if (inAddr.equals(myAddr)) {...}
}
getInterfaceAddresses metodu
Arayüze ait IPv4 ve IPv6 adreslerini karışık olarak verir.
Örnek
Şöyle yaparız.
NetworkInterface networkInterface = ...;
for (InterfaceAddress ifAddress : networkInterface.getInterfaceAddresses()){...}
Örnek
Şöyle yaparız
NetworkInterface networkInterface = NetworkInterface.getByName(interfaceName);
if (networkInterface == null) {
  throw new InternalError("No network interface found for " + interfaceName);
}
if (!networkInterface.isUp()) {
  throw new InternalError("network interface is not up: " + interfaceName);
}

List<InetAddress> inetAddressStream = networkInterface.getInterfaceAddresses().stream()
  .map(InterfaceAddress::getAddress)
  .filter(inetAddress -> !inetAddress.isLoopbackAddress() &&
!inetAddress.isLinkLocalAddress())
.collect(Collectors.toList());

Inet4Address inet4Address = inetAddressStream.stream()
  .filter(inetAddress -> inetAddress instanceof Inet4Address)
  .findFirst()
  .map(Inet4Address.class::cast)
  .orElseThrow(() -> new InternalError("No IPv4 address found " + interfaceName));

Inet6Address inet6Address = inetAddressStream.stream()
  .filter(inetAddress -> inetAddress instanceof Inet6Address)
  .findFirst()
  .map(Inet6Address.class::cast)
  .orElse(null);
getName metodu
Şöyle yaparız.
String name = networkInterface.getName();
getNetworkInterfaces metodu
Tüm arayüzleri döner. Şöyle yaparız.
Enumeration<NetworkInterface> ifs = NetworkInterface.getNetworkInterfaces();
while (ifs.hasMoreElements()) {
  NetworkInterface networkInterface = ifs.nextElement();
  ...
}
isLoopback metodu
Şöyle yaparız.
if (networkInterface.isLoopback()) {...}
isUp metodu
Şöyle yaparız.
if (networkInterface.isUp()) {...}


Hiç yorum yok:

Yorum Gönder