Pada aplikasi jaringan, terkadang akan ada kebutuhan untuk mengambil perangkat atau interface jaringan yang terhubung di komputer tersebut, sekaligus mengetahui alamat IP yang ada di perangkat tersebut.
Berikut adalah contoh code Java untuk mengambil data tersebut
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | package whatever.name; import java.net.Inet6Address; import java.net.InetAddress; import java.net.NetworkInterface; import java.util.ArrayList; import java.util.Enumeration; import java.util.LinkedHashMap; import java.util.List; /** * Created with IntelliJ IDEA. * Author : ali LIM ( [email protected] ) * Website : http://www.konglie.web.id * Date : 1/6/2015 * Time : 9:33 PM * PERIZINAN * Saya bukan Pengacara yang mengerti Bahasa Hukum, * Namun, program ini saya berikan untuk tujuan pembelajaran * dan bagian atau seluruh code di file ini * TIDAK BOLEH didistribusikan untuk tujuan komersil atau * berbayar, tanpa izin tertulis dari saya. * LICENSE * I am not a lawyer, but part of or all of this source code * MAY NOT be distributed for commercial purpose, without * written permission from me. */ public class NetInterfaces { public static LinkedHashMap<String, List<String>> getAll(){ return getAll(false, false, false); } /** * * @param loopback, mengikutsertakan alamat IP loopback, include Loopback IP Address * @param ipv6, mengikutsertakan alamat IPv6, include IPv6 addresses * @param includeEmpty, mengikutsertakan perangkat tanpa IP, include interface without assigned ip * @return hashmap berisikan nama perangkat dan ip yang diberikan, hashmap of interface with its IPs */ public static LinkedHashMap<String, List<String>> getAll(boolean loopback, boolean ipv6, boolean includeEmpty){ LinkedHashMap<String, List<String>> result = new LinkedHashMap<String, List<String>>(); try { Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); while(en.hasMoreElements()){ List<String> addrs = new ArrayList<String>(); NetworkInterface n = en.nextElement(); Enumeration<InetAddress> ad = n.getInetAddresses(); while(ad.hasMoreElements()){ InetAddress a = ad.nextElement(); if(!ipv6 && a instanceof Inet6Address){ continue; } if(!loopback && a.isLoopbackAddress()){ continue; } addrs.add(a.getHostAddress()); } if(!includeEmpty && addrs.isEmpty()){ continue; } result.put(n.getDisplayName(), addrs); } } catch (Exception e){ } return result; } public static String printAll(){ String str = ""; LinkedHashMap<String, List<String>> result = getAll(); for(String iface : result.keySet()){ System.out.println(iface); str += iface + "\n"; List<String> addrs = result.get(iface); for(String addr : addrs){ System.out.println("\t" + addr); str += " " + addr + "\n"; } } return str; } } |
Adapun contoh pengunaannya
1 2 3 | public static void main(String[] args){ NetInterfaces.printAll(); } |
Demikian, semoga berguna.