113 字
1 分钟
在Kotlin中不使用外部库的情况下解析SRV记录
直接贴代码
private const val MC_SRV_PREFIX = "_minecraft._tcp"
private val env = Hashtable<String, String>().also {
t["java.naming.factory.initial"] = "com.sun.jndi.dns.DnsContextFactory"
}
private val dirContext = InitialDirContext(env)
fun srv(host: String): MutableList<String> {
val srvDomain = "$MC_SRV_PREFIX.$host"
val attrs = dirContext.getAttributes(srvDomain, arrayOf("SRV"))
val srvRecords = mutableListOf<String>()
val srvAttr = attrs.get("SRV")
if (srvAttr != null) {
for (i in 0 until srvAttr.size()) {
val srvRecord = srvAttr.get(i) as String
srvRecords.add(srvRecord)
}
return srvRecords
}
fun main() {
val srvRecords = srv(host)
srvRecords.forEach {
val srv = it.split(" ")
val priority = srv.first().toInt()
val weight = srv[1].toInt()
val port = srv[2].toInt()
val host = srv.last()
// 在这里处理所有的srv记录
}
}