diff --git a/src/Client.kt b/src/Client.kt index de4fc2d..64c3918 100644 --- a/src/Client.kt +++ b/src/Client.kt @@ -4,9 +4,7 @@ import kotlinx.coroutines.runBlocking import java.io.IOException import java.io.InputStream import java.io.OutputStream -import java.net.InetSocketAddress import java.net.Socket -import java.util.Arrays import javax.sound.sampled.AudioFormat import javax.sound.sampled.AudioSystem import kotlin.system.measureTimeMillis @@ -64,7 +62,13 @@ fun mainClient() = runBlocking { launch(Dispatchers.IO) { while (true) { try { + if (`in`!!.available() > bufferIn.size * 2) { + `in`!!.skip(`in`!!.available().toLong()) + continue + } + `in`!!.read(bufferIn, 0, bufferIn.size) + sourceDataLine.write(bufferIn, 0, bufferIn.size) } catch (e: IOException) { e.printStackTrace() diff --git a/src/Server.kt b/src/Server.kt index fa0e2b3..bf07d42 100644 --- a/src/Server.kt +++ b/src/Server.kt @@ -17,7 +17,6 @@ fun main() = runBlocking { for (client in clientAudios) { if (!client.isConnected) { clientAudios.remove(client) - println("现在是: $clientAudios") continue } client.read() @@ -64,6 +63,12 @@ class ClientAudio(var socket: Socket) { fun read() { try { + if (`in`!!.available() > bufferIn.size * 2) { + `in`!!.skip(`in`!!.available().toLong()) + Arrays.fill(mixSample, 0f) + return + } + `in`.read(buffer) AudioConvert.convertShortByteToFloat(buffer, sample) Arrays.fill(mixSample, 0f)