有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

socket如何“清除”Java DatagramSocket上的接收缓冲区?

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

我们需要定期停止接收数据(因为另一台机器正在处理数据)。在这些时间里,我的socket读取器线程进入睡眠循环。当开始接收数据包时,我再次进入socket.receive(Packet),缓冲区中充满了我不应该处理的数据包。(数据在“停止时间”时出现。)

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

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


共 (1) 个答案

  1. # 1 楼答案

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

    所以套接字继续像平常一样接收数据,但是如果它处于停机状态,它会立即丢弃数据包

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