반응형
Local IP
오늘은 앱을 구현하는 동안에 필요했던 network interface을 통해서 Local IP을 얻어오는 코드에 대한 기술을 해 볼까 합니다.
@Throws(SocketException::class)
fun getLocalIpAddress(): String {
//Device에 있는 모든 네트워크에 대해 뺑뺑이를 돕니다.
val en = NetworkInterface.getNetworkInterfaces()
while (en.hasMoreElements()) {
val intf = en.nextElement()
//네트워크 중에서 IP가 할당된 넘들에 대해서 뺑뺑이를 한 번 더 돕니다.
val enumIpAddr = intf.inetAddresses
while (enumIpAddr.hasMoreElements()) {
val inetAddress = enumIpAddr.nextElement()
//네트워크에는 항상 Localhost 즉, 루프백(LoopBack)주소가 있으며, 우리가 원하는 것이 아닙니다.
//IP는 IPv6와 IPv4가 있습니다.
//IPv6의 형태 : fe80::64b9::c8dd:7003
//IPv4의 형태 : 123.234.123.123
//어떻게 나오는지는 찍어보세요.
if (inetAddress.isLoopbackAddress) {
Log.e("IPAddress", "ip=" + intf.displayName + "(loopback) | " + inetAddress.hostAddress)
} else {
Log.e("IPAddress", "ip=" + intf.displayName + " | " + inetAddress.hostAddress)
}
if (!inetAddress.isLoopbackAddress && inetAddress is Inet4Address) {
Log.e("", "")
return inetAddress.getHostAddress().toString()
}
}
}
return ""
}
물론 코드는 kotlin 코드 입니다. 구글링을 많이 해 보아도 java로 되어 있는 코드들은 많은데, kotlin 으로 되어 있는 코드는 잘 찾기가 힘이 듭니다. 해서 이번에 찾은 코드를 기록해 두려고 합니다. 그래야 나중에 또 사용할 일이 생길 수 있으니까요
우리가 찾는 IP 주소는 IPv4, IPv6 등등이 있을 수 있습니다. IPv6은 이제 너무 많아서 포화 상태가 되어가는 IPv4의 확장판이라고 보면 될 것 같습니다. 아직 까지는 IPv4로 지칭 되는 192.168.0.1 형식의 IP주소가 나오게 됩니다.
실행된 모습은 직접 만들어서 확인해 보시면 좋을 듯 합니다. 그래야 또 하나 배움의 길로 들어설 테니 말입니다.
반응형
'모바일 앱(안드로이드)' 카테고리의 다른 글
안드로이드 앱 만들기 : Zxing 을 활용 QRCODE 생성 (feat Kotlin) (4) | 2023.03.22 |
---|---|
안드로이드 앱 만들기 : jetpack compose 에서도 ConstraintLayout (11) | 2023.03.16 |
안드로이드 앱 만들기 : 1일 1앱 만들기 2번째, 할인 쿠폰 모아보기 (9) | 2023.03.01 |
안드로이드 앱 만들기 : File Download 구현 (ktor 활용) (5) | 2023.02.28 |
안드로이드 앱 만들기 : 주소 API 사용해 Kakao 우편번호 서비스 활용해 보기 #2 (feat jetpack compose) (8) | 2023.02.14 |