gpt4 book ai didi

Java DatagramSocket 无法接收所有数据包

转载 作者:行者123 更新时间:2023-12-02 05:32:03 28 4
gpt4 key购买 nike

我编写了一个非常简单的 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上运行时,就可以了。没有丢包。

最佳答案

经过多次尝试,我发现当我更改软件包平台时,问题就消失了。所以我猜测这个问题是由打包工具(带有应用程序插件的gradle,Kotlin插件)引起的,或者是特定jdk版本的一些未知错误引起的。

关于Java DatagramSocket 无法接收所有数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56197400/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com