Я пишу очень простую программу kotlin для получения изображения от клиента.ключевая часть, как указано ниже.
while (running) {
try {
buf = ByteArray(buffSize)
packet = DatagramPacket(buf, buf.size)
socket.receive(packet)
// put packet data in blockingQueue, use thread to consume the queue
queue.offer(arrayOf(buf.clone(), packet!!.address, packet!!.port, packet!!.length))
} catch (e: Exception) {
e.printStackTrace()
}
}
когда эта программа работает на Surface Pro, она не может получить все пакеты, отправленные ей клиентом.например, клиент отправляет 1000 пакетов, он получает 900 пакетов, а затем застрял в socket.receive ().Wireshark, запущенный одновременно на Surface Pro, показывает, что все 1000 пакетов получены.
, когда программа работает на Mac Pro, это просто нормально.пакет не потерян.