我正在使用void listDevices(string*& list)
构建联网应用程序。
我有一个“网络”主题,其唯一的工作是从DatagramSocket
提取DatagramPacket
个对象,并将数据放在DatagramSocket
上。它尽可能快地完成这项工作。然后该队列被其他线程使用。
假设我的“网络”线程运行缓慢且数据包正在套接字上建立。
BlockingQueue
吗? 答案 0 :(得分:4)
套接字是否可能“溢出”
您的套接字接收缓冲区可以填充到无法接受新数据报的位置。
并且数据包丢失了?
[UDP]数据包可能始终可能会丢失,但是这是另一个原因。
从套接字中获取数据包并将它们尽早存储在POJO队列中是否有任何优势?
不是真的。您只是将问题从需要潜在无限的网络和套接字接收缓冲区容量转移到需要潜在的无限输入队列容量。您应该尽可能快地处理传入的数据报,并尽可能地消耗损失。
我的“网络”线程和队列设置是否真的有必要 - 我应该直接使用DatagramSocket吗?
是的。