Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我试图弄清楚如何实现一个不断“准备”或“侦听”来自服务器的 UDP 数据包的客户端。
我是否需要不断地socket.receive(packet)继续前进,直到收到一个,然后一旦收到,再次打开它?
socket.receive(packet)
我应该设置一个重要的socket.setSoTimeout()时间,以便它循环最少的时间吗?
socket.setSoTimeout()
我需要做什么:
能够从服务器请求特定的数据包,然后在不确定的时间内接收任意数量的数据包
根据您的流量有多大,您可能会考虑 NIO,尽管它的理解和使用要复杂得多。
如果您只有一个基本应用程序,则启动一个仅阻塞receive(packet). 每当它返回(数据包到达)时,将数据包分派给某种处理程序。如果流量低,这可能是BlockingQueue某个其他线程正在监听的;如果您的流量很大,您可能会将作业发送到一个ExecutorService以并行处理。
receive(packet)
BlockingQueue
ExecutorService