자바 기반 로 컬 IP 주소 와 호스트 이름 가 져 오기
public void test1() {
try {
InetAddress addr = InetAddress.getLocalHost();
System.out.println("IP :" + addr.getHostAddress() + ", :" + addr.getHostName());
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
출력:IP 주소:192.168.153.1,호스트 이름:DESKTOP-33UP3E
이런 방식 으로 얻 은 호스트 이름 은 문제 가 없습니다.이런 방식 으로 얻 은 호스트 이름 은 문제 가 없 지만 얻 은 IP 주 소 는 고려 해 야 합 니 다.만약 에 기계 에 여러 개의 네트워크 카드 가 있다 면...
그 가 얻 은 IP 는 누구의 것 입 니까?사실 위 에서 출력 한 IP 는 제 가상 컴퓨터 IP 주소 입 니 다.제 유선 네트워크 카드 의 주소 도 아니 고 제 무선 네트워크 카드 의 주소 도 아 닙 니 다.
방식 2:java.net.NetworkInterface 로 가 져 오기
public void test2() {
try {
Enumeration<NetworkInterface> faces = NetworkInterface.getNetworkInterfaces();
while (faces.hasMoreElements()) { //
NetworkInterface face = faces.nextElement();
if (face.isLoopback() || face.isVirtual() || !face.isUp()) {
continue;
}
System.out.print(" :" + face.getDisplayName() + ", :");
Enumeration<InetAddress> address = face.getInetAddresses();
while (address.hasMoreElements()) { //
InetAddress addr = address.nextElement();
if (!addr.isLoopbackAddress() && addr.isSiteLocalAddress() && !addr.isAnyLocalAddress()) {
System.out.print(addr.getHostAddress() + " ");
}
}
System.out.println("");
}
} catch (SocketException e) {
e.printStackTrace();
}
}
출력:네트워크 인터페이스 이름:VMnet 8 용 VMware 가상 이 더 넷 어댑터,주소:192.168.153.1
네트워크 인터페이스 이름:TAP-Windows 어댑터 V9,주소:10.8.0.30
네트워크 인터페이스 이름:VMnet 1 용 VMware 가상 이 더 넷 어댑터,주소:192.168.46.1
네트워크 인터페이스 이름:Intel(R)Dual Band Wireless-AC 8265,주소:172.16.78.27
의문첫째,셋째 행동 VM 가상 컴퓨터 네트워크 주소 가 왜 있 는 지 모 르 겠 습 니 다.
도구 종류:
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
/**
*
*
* @author zhi
* @since 2019 11 13 09:04:36
*
*/
public class LocalHostUtil {
/**
*
*
* @return
* @throws UnknownHostException
*/
public static String getHostName() throws UnknownHostException {
return InetAddress.getLocalHost().getHostName();
}
/**
* IP
*
* @return
* @throws UnknownHostException
*/
public static String getLocalIP() throws UnknownHostException {
return InetAddress.getLocalHost().getHostAddress();
}
/**
* IP, 、
*
* @return
* @throws SocketException
*/
public static String[] getLocalIPs() throws SocketException {
List<String> list = new ArrayList<>();
Enumeration<NetworkInterface> enumeration = NetworkInterface.getNetworkInterfaces();
while (enumeration.hasMoreElements()) {
NetworkInterface intf = enumeration.nextElement();
if (intf.isLoopback() || intf.isVirtual()) { //
continue;
}
Enumeration<InetAddress> inets = intf.getInetAddresses();
while (inets.hasMoreElements()) {
InetAddress addr = inets.nextElement();
if (addr.isLoopbackAddress() || !addr.isSiteLocalAddress() || addr.isAnyLocalAddress()) {
continue;
}
list.add(addr.getHostAddress());
}
}
return list.toArray(new String[0]);
}
/**
* Windows
*
* @return
*/
public static boolean isWindowsOS() {
boolean isWindowsOS = false;
String osName = System.getProperty("os.name");
if (osName.toLowerCase().indexOf("windows") > -1) {
isWindowsOS = true;
}
return isWindowsOS;
}
public static void main(String[] args) {
try {
System.out.println(" Windows :" + LocalHostUtil.isWindowsOS());
System.out.println(" :" + LocalHostUtil.getHostName());
System.out.println(" IP:" + LocalHostUtil.getLocalIP());
System.out.println(" IP:" + String.join(",", LocalHostUtil.getLocalIPs()));
} catch (UnknownHostException e) {
} catch (Exception e) {
e.printStackTrace();
}
}
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.