持续侦听来自Server的UDP数据包

时间:2013-08-29 15:28:31

标签: java android sockets udp datagram

我试图弄清楚如何实现一个客户端,该客户端经常“准备好”或“监听”来自服务器的UDP数据包。

我基本上需要不断保持socket.receive(packet)直到我收到一个然后一旦我做,再打开它?

我应该设置一个重要的socket.setSoTimeout()时间,以便循环次数最少吗?

我需要做什么:

能够从服务器请求特定数据包,然后在无限期的时间内收到任意数量的数据包

1 个答案:

答案 0 :(得分:1)

根据流量的大小,你可能会看一下NIO,尽管理解和使用它是一个非常复杂的选择。

如果您只有一个基本应用程序,那么启动一个仅阻塞receive(packet)的线程。每当它返回(数据包已到达)时,将数据包分派给某种处理程序。如果流量较低,则可能是某个其他线程正在侦听的BlockingQueue;如果您的流量很高,您可以将作业发送到ExecutorService以便并行处理。