Java에서 InetAddress 개체 만들기


82

문자열 (예 : localhost또는 127.0.0.1) 에있는 IP 번호 또는 이름으로 지정된 주소를 InetAdress 개체 로 변환 하려고 합니다. 생성자는 없지만 InetAddress 를 반환하는 정적 메서드가 있습니다. 따라서 호스트 이름을 얻더라도 문제가되지 않지만 IP 번호를 얻으면 어떻게됩니까? byte [] 를 얻는 한 가지 방법이 있지만 이것이 어떻게 도움이 될 수 있는지 잘 모르겠습니다. 다른 모든 방법은 호스트 이름을 가져옵니다.

InetAddress API 문서

답변:


133

getByName 또는 getByAddress 를 사용할 수 있어야합니다 .

호스트 이름은 "java.sun.com"과 같은 시스템 이름이거나 해당 IP 주소의 텍스트 표현 일 수 있습니다.

InetAddress addr = InetAddress.getByName("127.0.0.1");

바이트 배열을 취하는 메소드는 다음과 같이 사용할 수 있습니다.

byte[] ipAddr = new byte[]{127, 0, 0, 1};
InetAddress addr = InetAddress.getByAddress(ipAddr);

3
127보다 큰 숫자가 나오면 어떻게합니까? 예 : IP 192.168.0.1. 0xFF로 int를 마스킹합니까? 아니면 int를 바이트로 캐스트합니까?
마테이 Kormuth

@MatejKormuth 0xFF로 마스킹이 작동해야한다고 생각합니다.
Bala R

1
@ Inet4AddressImpl이하는 것처럼 당신은 또한 그것을 표현할 수 마테이-kormuth :byte[] loopback = {0x7f,0x00,0x00,0x01};
카를로스 페레이라

". 기본 생성자는 암시 슈퍼 생성자에 의해 throw 예외 유형의 UnknownHostException의를 처리 할 수 없습니다 명시 적으로 생성자를 정의해야"
Schütze

InetAddress 생성을 try / catch 문으로 묶는 데 도움이됩니다.
Matthew Redmond

9

InetAddress 용 API에서

호스트 이름은 "java.sun.com"과 같은 시스템 이름이거나 해당 IP 주소의 텍스트 표현 일 수 있습니다. 리터럴 IP 주소가 제공되면 주소 형식의 유효성 만 확인됩니다.


7
ip = InetAddress.getByAddress(new byte[] {
        (byte)192, (byte)168, (byte)0, (byte)102}
);

3

InetAddress.getByName은 IP 주소에서도 작동합니다.

JavaDoc에서

호스트 이름은 "java.sun.com"과 같은 시스템 이름이거나 해당 IP 주소의 텍스트 표현 일 수 있습니다. 리터럴 IP 주소가 제공되면 주소 형식의 유효성 만 확인됩니다.


3

API는 사용하기 매우 쉽습니다.

// Lookup the dns, if the ip exists.
 if (!ip.isEmpty()) {
     InetAddress inetAddress = InetAddress.getByName(ip);
     dns = inetAddress.getCanonicalHostName(); 
 }

0

이것은 모든 웹 사이트의 IP 주소를 얻기위한 프로젝트이며 유용하고 만들기가 쉽습니다.

import java.net.InetAddress;
import java.net.UnkownHostExceptiin;

public class Main{
    public static void main(String[]args){
        try{
            InetAddress addr = InetAddresd.getByName("www.yahoo.com");
            System.out.println(addr.getHostAddress());

          }catch(UnknownHostException e){
             e.printStrackTrace();
        }
    }
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.