【发布时间】:2019-05-18 08:51:14
【问题描述】:
我编写了一个非常简单的 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()。 Surface pro上同时运行的Wireshark显示1000个包都收到了。
当程序在 mac pro 上运行时,一切正常。没有丢包。
【问题讨论】:
标签: java sockets kotlin datagram