我正在使用DatagramSocket构建网络应用程序。

我有一个“网络”线程,其唯一的工作是从DatagramPacket中提取DatagramSocket对象并将数据放在BlockingQueue上。它会尽快执行此操作。然后,该队列被其他线程占用。

假设我的“网络”线程运行缓慢,并且套接字处建立了数据包。

  • 套接字是否有可能“溢出”并且数据包丢失了?
  • 从套接字获取数据包并存储是否有任何优势
    他们早在POJO队列中?
  • 是否真的需要“网络”线程和队列设置-我应该直接使用DatagramSocket吗?
  • 最佳答案



    您的套接字接收缓冲区可能会填充到无法接受新数据报的地步。



    [UDP]数据包总是有可能丢失,但这是另一个原因。



    并不真地。您只是在解决问题,从可能需要无限的网络和套接字接收缓冲区容量到可能需要无限的输入队列容量。您应该以尽可能快的速度处理传入的数据报为目标,但是可能会造成损失。



    是的。

    10-08 20:18