Java에서 현재 시스템의 IP 주소 확인
컨텍스트:
여러 노드가 있는 분산 시스템에서는 각 노드가 효과적으로 통신하려면 고유한 IP 주소가 필요합니다. 원활한 연결을 위해서는 이 IP 주소를 중앙 부트스트랩 노드에 등록해야 합니다. 그러나 네트워크 구성의 잠재적인 복잡성으로 인해 올바른 IP 주소를 얻는 것이 어려울 수 있습니다.
문제:
InetAddress.getLocalHost().getHostAddress( )은 외부 PPP IP 주소 대신 LAN IP 주소를 반환하는 경우가 많습니다. 이러한 불일치는 노드가 부트스트랩 노드 또는 다른 노드에 연결을 시도할 때 어려움을 야기합니다.
해결책 1: 네트워크 인터페이스 열거
연결된 사용 가능한 모든 IP 주소를 검색하려면 머신에서는 다음 코드를 사용하세요.
Enumeration e = NetworkInterface.getNetworkInterfaces(); while (e.hasMoreElements()) { NetworkInterface n = (NetworkInterface) e.nextElement(); Enumeration ee = n.getInetAddresses(); while (ee.hasMoreElements()) { InetAddress i = (InetAddress) ee.nextElement(); System.out.println(i.getHostAddress()); } }
이 접근 방식은 모든 IP 주소의 포괄적인 목록을 제공합니다. 그러나 올바른 IP 주소를 구별하는 것은 여전히 어렵습니다.
해결책 2: IP 주소 유형 구별
값 범위에 따라 IP 주소 유형을 결정합니다.
InetAddress API는 각 주소 유형을 테스트하여 가장 적합한 주소를 식별하는 방법을 제공합니다.
해결책 3: 외부 FQDN 검색
외부적으로 광고되는 FQDN(정규화된 도메인 이름)을 획득하고 이를 사용하여 기본 IP 주소를 조회합니다.
InetAddress inetAddress = InetAddress.getByName("myFQDN"); String ipv4Address = inetAddress.getHostAddress();
이 방법은 DNS 확인에 의존하며 그렇지 않을 수도 있습니다. 특히 로드 밸런서가 있는 경우 모든 시나리오에서 실행 가능합니다.
위 내용은 Java에서 시스템의 외부 IP 주소를 안정적으로 결정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!