NekoX/TMessagesProj/src/main/java/tw/nekomimi/nekogram/ProxyManager.kt

52 lines
777 B
Kotlin

package tw.nekomimi.nekogram
import java.net.InetSocketAddress
import java.net.ServerSocket
import kotlin.random.Random
object ProxyManager {
@JvmStatic
fun mkPort(): Int {
var port: Int
do {
port = mkNewPort()
} while (!isProxyAvailable(port))
return port
}
private fun mkNewPort() = Random.nextInt(2048, 32768)
@JvmStatic
fun isProxyAvailable(port: Int): Boolean {
if (port !in 2048 until 32768) return false
runCatching {
val server = ServerSocket()
server.bind(InetSocketAddress("127.0.0.1",port))
server.close()
Thread.sleep(1000L)
}.onFailure {
return false
}
return true
}
}