diff --git a/app/src/main/java/com/futo/platformplayer/Extensions_Network.kt b/app/src/main/java/com/futo/platformplayer/Extensions_Network.kt index f0137f2d..fca7deda 100644 --- a/app/src/main/java/com/futo/platformplayer/Extensions_Network.kt +++ b/app/src/main/java/com/futo/platformplayer/Extensions_Network.kt @@ -241,8 +241,11 @@ fun getConnectedSocket(attemptAddresses: List, port: Int): Socket? return null; } + val sortedAddresses: List = addresses + .sortedBy { addr -> addressScore(addr) } + val sockets: ArrayList = arrayListOf(); - for (i in addresses.indices) { + for (i in sortedAddresses.indices) { sockets.add(Socket()); } @@ -250,7 +253,7 @@ fun getConnectedSocket(attemptAddresses: List, port: Int): Socket? var connectedSocket: Socket? = null; val threads: ArrayList = arrayListOf(); for (i in 0 until sockets.size) { - val address = addresses[i]; + val address = sortedAddresses[i]; val socket = sockets[i]; val thread = Thread { try { diff --git a/app/src/main/java/com/futo/platformplayer/Utility.kt b/app/src/main/java/com/futo/platformplayer/Utility.kt index e2868ed6..0875aadb 100644 --- a/app/src/main/java/com/futo/platformplayer/Utility.kt +++ b/app/src/main/java/com/futo/platformplayer/Utility.kt @@ -434,7 +434,7 @@ private fun interfaceScore(nif: NetworkInterface): Int { } } -private fun addressScore(addr: InetAddress): Int { +fun addressScore(addr: InetAddress): Int { return when (addr) { is Inet4Address -> { val octets = addr.address.map { it.toInt() and 0xFF }