[JAVA] NetworkInterface 및 InetAddress Class를 사용하여 IP구하기

승본지·2023년 3월 27일

JAVA

목록 보기
3/3
post-thumbnail

📌NetworkInterface

NetworkInterface Class 사용

    public static void main(String[] args) {
        try {
            Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
            while (interfaces.hasMoreElements()) {
                NetworkInterface ni = interfaces.nextElement();
                Enumeration<InetAddress> addresses = ni.getInetAddresses();
                while (addresses.hasMoreElements()) {
                    InetAddress addr = addresses.nextElement();
                    if (!addr.isLinkLocalAddress() && !addr.isLoopbackAddress() && addr instanceof Inet4Address) {
                        System.out.println("IP 주소: " + addr.getHostAddress());
                        System.out.println("호스트 이름: " + addr.getHostName());
                    }
                }
            }
        } catch (SocketException e) {
            e.printStackTrace();
        }
    }

1.NetworkInterface.getNetworkInterfaces() 메서드를 사용하여 시스템에서 사용 가능한 모든 네트워크 인터페이스를 가져온다.
2.NetworkInterface.getInetAddresses() 메서드를 사용하여 해당 네트워크 인터페이스의 모든 IP 주소를 가져온다..
3.가져온 IP 주소 중에서 Link-Local AddressLoopback Address가 아니며, IPv4 주소인 경우에만 출력한다..

Link-Local Address는 말 그대로 로컬 링크 내에서만 사용 가능한 IP 주소이다. 이 주소는 네트워크에 연결된 모든 장치가 공유하는 주소로, 주로 인터넷을 통하지 않는 로컬 네트워크 상에서 장치 간 통신에 사용된다. 예를 들어보면, 같은 Wi-Fi 네트워크에 연결된 스마트폰과 컴퓨터가 있을 경우, 이들은 Link-Local Address를 사용하여 서로 통신할 수 있다.

📚 Loopback Address

Loopback Address는 로컬 머신(즉, 컴퓨터 자기 자신)에서만 사용 가능한 IP 주소이다. 이 주소는 컴퓨터 자신을 가리키는데 사용되며, 네트워크를 거치지 않고 로컬 머신 내에서 통신할 때 사용된다. 일반적으로 127.0.0.1이 Loopback Address로 사용된다.

Link-Local AddressLoopback Address는 둘 다 IP 주소의 범주 중 하나이지만, 각각 다른 목적을 가지고 있다.
그러므로 , Link-Local AddressLoopback Address는 각각 로컬 네트워크 내에서와 로컬 머신 내에서만 사용 가능한 IP 주소이다. 그러나 각각의 용도가 다르기 때문에, 장치 간 통신과 로컬 머신 내부에서의 통신을 구분하여 사용해야 한다.

NetworkInterface 실행결과

📌InetAddress

    public static void main(String[] args) {

        try {
            InetAddress ip = InetAddress.getLocalHost();
            System.out.println("IP 주소 2: " + ip.getHostAddress());
            System.out.println("호스트 이름 2: " + ip.getHostName());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

1.getLocalHost() 메서드는 로컬 머신의 IP 주소와 호스트 이름을 가진 InetAddress 객체를 반환한다.
2.getHostAddress() 메서드는 InetAddress 객체에서 IP 주소를 가져오고, getHostName() 메서드는 호스트 이름을 가져온다.

InetAddress 실행결과

0개의 댓글