打破UDP套接字接收方法

时间:2013-12-19 14:55:53

标签: java android multithreading udp

在多线程应用程序中,我有一个主题:

datagramSocket.receive(packet);
等待数据包的

- 使用 receive 方法阻止执行。 与此同时,其他一些线程想要关闭这个“等待”线程。

我怎样才能做到这一点?

目前我正在关闭套接字,导致抛出 SocketException ,我认为这不是最好的主意......

任何帮助?

1 个答案:

答案 0 :(得分:1)

自己关闭套接字并不是一个坏主意:我们不能在不查看上下文的情况下说出是否有任何设计错误,但我并不喜欢它。

另一种方法是将代码放在一个循环中,该循环检查一些volatile标志(因为它可能已经存在)并设置超时:

while (on) {
  //...
  datagramSocket.setSoTimeout(5000);
  datagramSocket.receive(packet);
  //...
}