응용 프로그램에 java.net.NetworkInterface
및 java.net.InetAddress
이상의 네트워크 구성 정보가 필요합니다. 서브넷, 게이트웨이 및 DNS 서버와 같은 정보를 포함하고 싶지만 Windows 및 Linux 플랫폼 모두에 코드를 포팅 할 수 있어야합니다.Windows 및 Linux 플랫폼에서 Java로 네트워크 정보 얻기
Windows 용으로는 Runtime.getRuntime().exec("ipconfig")
을, Linux 용으로는 Runtime.getRuntime().exec("ifconfig")
을 수행하여 결과를 파싱하는 것으로 조사했습니다. 어쩌면 이것을 할 수있는 더 좋은 방법이나 내가 사용할 수있는 오픈 소스 프로젝트가 있을지도 모른다. 올바른 방향
ifconfig 및 ipconfig를 호출하면 이식성이 깨집니다. 현재 가지고있는 코드를 게시 할 수 있습니까? – Woot4Moo
각 OS마다 별도의 구현을 호출하는 팩토리 메서드를 만들었습니다. Windows의 경우 'ipconfig/all'을 호출하고 결과를 파싱합니다. 리눅스의 경우 'ifconfig', 'route -n', 'cat /etc/resolv.conf'를 호출합니다. –
또한 일부 Linux 배포판의 기본 설치에는/sbin이 경로에 포함되어 있지 않으므로 사용자에 따라 호출이 실패 할 수 있습니다. –