gpt4 book ai didi

java - 如何 "clear out"Java DatagramSocket 上的接收缓冲区?

转载 作者:搜寻专家 更新时间:2023-10-31 20:15:10 28 4
gpt4 key购买 nike

我有一个 Java 程序,不断从外部系统发送 UDP 数据。

我们需要定期停止接收数据(因为另一台机器正在处理它)。在那段时间里,我的套接字阅读器线程进入休眠循环。当开始接收数据包时,我再次进入 socket.receive(Packet) 并得到一个充满数据包的缓冲区,这些数据包是我不应该处理的。 (数据是在“停止时间”来的。)

有没有办法清除 DatagramSocket 的缓冲区?

如果不是,最好的选择是什么?当我进入等待状态时将缓冲区大小设置为 0,并在我再次开始服务数据包时将其恢复?当我等待时关闭套接字并在我回来时打开一个新套接字?

最佳答案

与其在套接字上有停机时间,不如在处理数据包的任何代码上停机。

因此套接字继续像往常一样接收数据,但如果它处于停机状态,它会立即丢弃数据包。

不完全是最有效的解决方案,但它确实很容易实现并且可能很有用,因为它在其他情况下使节点处于打开状态以便在不同时间接受不同类型的数据包。

关于java - 如何 "clear out"Java DatagramSocket 上的接收缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8439089/

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