2017-10-22 17 views
1

유닉스 VM에서는/etc/hosts에 다음 항목을 넣을 수 있습니다. ABC_XYZ_HOSTNAME.abc.com 15.115.112. *** 그리고 그 후에는 "ping ABC_XYZ_HOSTNAME.abc.com"을 성공적으로 수행 할 수 있습니다. 하지만 내 코드가호스트 이름에 언더 스코어가 지원됩니까?

으로 깨졌습니다.
InetAddresses.forString(ip) 

예외적으로, IP 문자열 리터럴이있는 IllegalArgumentException은 유효하지 않습니다.

그래서 밑줄이 지원되는 호스트 이름입니까? 아니면 여기에 다른 것이 있습니까?

+0

이 게시물 밑줄이 허용되지 않는 것을 제안 사용해야합니다. https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address –

답변

2

DNS 이름을 InetAddresses.forString과 함께 사용할 수 없습니다. 이 메서드의 javadoc에는 다음과 같이 나와 있습니다.

주어진 문자열 표현을 갖는 InetAddress를 반환합니다.

이것은 모든 네임 서비스 조회 (예 : DNS 없음)를 의도적으로 방지합니다.

매개 변수 : ipString - IPv4 또는 IPv6 문자열 리터럴을 포함하는 문자열입니다. "192.168.0.1"또는 "2001 : db8 :: 1"

DNS 이름은 유효한 값이 아닙니다.

DNS lookup of your address 위해 당신은

InetAddress.getByName(host)