개발/JAVA

Java로 네트워크 프로그래밍 시작하기: InetAddress를 활용한 IP 주소 확인

예니03 2025. 1. 28. 10:51
반응형

네트워크 프로그래밍을 시작하려면 IP 주소에 대한 이해가 필수인데요.
오늘은 Java의 InetAddress 클래스를 활용해 내 PC의 로컬 IP 주소와 서버의 IP 주소를 확인하는 방법을 소개합니다.
간단한 코드로 네트워크 프로그래밍의 첫걸음을 떼어보세요! 😊

 

1. 주요 클래스 소개: InetAddress란?

Java의 InetAddress 클래스는 IP 주소를 표현하기 위해 제공되는 클래스입니다.
이를 통해 로컬 컴퓨터의 IP 주소를 확인하거나, 특정 도메인의 IP 주소를 얻을 수 있답니다.
이 클래스는 IP 주소와 호스트 이름 간의 매핑을 다룰 때 유용하게 사용됩니다.

 

2. 코드 살펴보기: 내 IP와 서버 IP 확인하기

전체 코드

package com.javaex.network;

import java.net.InetAddress;
import java.net.UnknownHostException;

public class InetAddressEx {

    public static void main(String[] args) {
        // 내 PC의 로컬 IP 확인 
        printLocalIp();
        // 서버 IP (naver, google) 확인
        printServerIp("www.naver.com");
        printServerIp("www.google.com");
    }

    private static void printLocalIp() {
        // local loopback : 127.0.0.1 (로컬호스트)
        try {
            InetAddress local = InetAddress.getLocalHost();
            System.out.println("Local IP Address: " + local.getHostAddress());
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
    }

    private static void printServerIp(String hostName) {
        try {
            InetAddress[] hosts = InetAddress.getAllByName(hostName);
            for (InetAddress remote : hosts) {
                System.out.println(hostName + " -> IP Address: " + remote.getHostAddress());
            }
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
    }
}

 

 

3. 코드 설명 및 주요 메서드

1) printLocalIp(): 내 로컬 IP 확인

  • InetAddress.getLocalHost()
    내 컴퓨터의 로컬 IP 주소를 반환합니다.
    • 로컬호스트: 일반적으로 127.0.0.1을 반환하며, 이는 자기 자신을 가리키는 IP입니다.
  • 반환된 IP 주소는 getHostAddress()로 출력할 수 있습니다.
InetAddress local = InetAddress.getLocalHost();
System.out.println("Local IP Address: " + local.getHostAddress());

 

2) printServerIp(String hostName): 서버 IP 확인

  • InetAddress.getAllByName(hostName)
    입력받은 호스트 이름(도메인)의 모든 IP 주소를 배열로 반환합니다.
    예를 들어, www.google.com은 여러 IP 주소를 가질 수 있습니다.
  • 반복문을 사용해 배열에 포함된 모든 IP 주소를 출력합니다.
InetAddress[] hosts = InetAddress.getAllByName(hostName);
for (InetAddress remote : hosts) {
    System.out.println(hostName + " -> IP Address: " + remote.getHostAddress());
}

 

4. 실행 결과

코드를 실행하면 아래와 같은 결과를 얻을 수 있습니다.

Local IP Address: 192.168.0.101  
www.naver.com -> IP Address: 223.130.200.107  
www.naver.com -> IP Address: 223.130.200.104  
www.google.com -> IP Address: 142.250.191.78  
www.google.com -> IP Address: 142.250.191.110  
...
  • Local IP Address:
    내 컴퓨터의 로컬 IP 주소를 확인할 수 있습니다.
  • Server IP Address:
    특정 도메인(예: 네이버, 구글)의 IP 주소를 반환하며, 여러 IP가 존재할 수도 있습니다.

 

5. 활용 사례 및 팁

1) 네트워크 상태 확인

  • 로컬 IP 주소를 확인하면 현재 네트워크 연결 상태를 쉽게 파악할 수 있습니다.
  • 서버의 IP 주소를 확인하면 특정 서버와의 연결 상태를 테스트할 때 유용합니다.

2) 네트워크 디버깅

  • 도메인 이름이 IP 주소로 변환되지 않을 때 문제를 진단할 수 있습니다.

3) 서버 로드 밸런싱 확인

  • 대형 웹사이트(예: Google)는 여러 IP 주소를 통해 트래픽을 분산합니다.
  • 이를 확인하려면 InetAddress.getAllByName()을 활용하세요.

 

6. 마무리

이번 코드를 통해 Java에서 네트워크 프로그래밍의 기본을 배우셨을 텐데요,
간단한 코드로도 네트워크를 다룰 수 있다는 점이 매력적이지 않나요?

여러분의 네트워크 프로그래밍 여정을 응원합니다! 🚀

반응형