From 83bca041c98ca4b0eecfee421954377a44e3adfa Mon Sep 17 00:00:00 2001 From: pppscn <35696959@qq.com> Date: Sat, 22 Jul 2023 14:20:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E7=BD=91=E7=BB=9C?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E7=9B=91=E6=8E=A7=E9=80=9A=E7=9F=A5=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0IPv6=E8=8E=B7=E5=8F=96=20#321?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../forwarder/service/NetworkStateService.kt | 18 ++++++--- .../idormy/sms/forwarder/utils/CommonUtils.kt | 37 +++++++++++++++++++ 2 files changed, 49 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/idormy/sms/forwarder/service/NetworkStateService.kt b/app/src/main/java/com/idormy/sms/forwarder/service/NetworkStateService.kt index f51dac83..4c0709cf 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/service/NetworkStateService.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/service/NetworkStateService.kt @@ -15,6 +15,7 @@ import androidx.work.workDataOf import com.google.gson.Gson import com.idormy.sms.forwarder.R import com.idormy.sms.forwarder.entity.MsgInfo +import com.idormy.sms.forwarder.utils.CommonUtils import com.idormy.sms.forwarder.utils.SettingUtils import com.idormy.sms.forwarder.utils.Worker import com.idormy.sms.forwarder.workers.SendWorker @@ -91,13 +92,18 @@ class NetworkStateService : Service() { msg.append(getString(R.string.operator_name)).append(": ").append(operatorName).append("\n") } - val inetAddress = NetworkUtils.getLocalInetAddress() - var hostAddress: String = inetAddress?.hostAddress?.toString() ?: "127.0.0.1" - msg.append(getString(R.string.host_address)).append(": ").append(hostAddress).append("\n") - + //获取IP地址 + val ipList = CommonUtils.getIPAddresses() if (ServiceUtils.isServiceRunning("com.idormy.sms.forwarder.service.HttpService")) { - hostAddress = if (hostAddress.indexOf(':', 0, false) > 0) "[${hostAddress}]" else hostAddress - msg.append(getString(R.string.http_server)).append(": ").append("http://${hostAddress}:5000") + ipList.forEach() { + msg.append(getString(R.string.host_address)).append(": ").append(it).append("\n") + val hostAddress = if (it.indexOf(':', 0, false) > 0) "[${CommonUtils.removeInterfaceFromIP(it)}]" else it + msg.append(getString(R.string.http_server)).append(": ").append("http://${hostAddress}:5000").append("\n") + } + } else { + ipList.forEach() { + msg.append(getString(R.string.host_address)).append(": ").append(it).append("\n") + } } sendMessage(context, msg.toString()) diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/CommonUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/CommonUtils.kt index c484afa6..65043232 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/CommonUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/CommonUtils.kt @@ -35,6 +35,9 @@ import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog.SingleButton import com.xuexiang.xui.widget.imageview.preview.PreviewBuilder import com.xuexiang.xutil.XUtil import com.xuexiang.xutil.common.StringUtils +import java.net.Inet4Address +import java.net.Inet6Address +import java.net.NetworkInterface import java.util.regex.Pattern /** @@ -277,6 +280,40 @@ class CommonUtils private constructor() { ) } + //获取本机IP地址 + fun getIPAddresses(): List { + val ipAddresses = mutableListOf() + + try { + val networkInterfaces = NetworkInterface.getNetworkInterfaces() + + while (networkInterfaces.hasMoreElements()) { + val networkInterface = networkInterfaces.nextElement() + val addresses = networkInterface.inetAddresses + + while (addresses.hasMoreElements()) { + val address = addresses.nextElement() + + if (address is Inet4Address || address is Inet6Address) { + ipAddresses.add(address.hostAddress) + } + } + } + } catch (e: Exception) { + e.printStackTrace() + } + + return ipAddresses + } + + fun removeInterfaceFromIP(ipAddress: String): String { + val index = ipAddress.indexOf("%") + return if (index != -1) { + ipAddress.substring(0, index) + } else { + ipAddress + } + } } init {