0

我正在客户端和服务器之间实现回调函数。

客户端向服务器注册自己,当事件发生时,服务器将向客户端发送一个数据报包以通知客户端该事件。

客户端将在用户指定的整个收听期间被阻止

当它被阻塞时,它会进入这个循环继续监听服务器进行回调。

while (waiting) {
    aSocket.setSoTimeout(0);
    aSocket.receive(reply);
    String replyString = new String(reply.getData()).trim();
    System.out.println(replyString);
    buffer = new byte[1000];
    reply = new DatagramPacket(buffer, buffer.length);
}

我用 timertask 编写了一个计时器,它在侦听期结束后将等待的值从 true 更改为 false。

我的问题是我希望客户在收听期结束后停止收听。但是,即使我使用计时器,客户端也会在

aSocket.receive(reply);

这里有谁知道我怎样才能跳过这段代码并退出循环?

非常感谢。

4

1 回答 1

1

来自javadoc

超时必须 > 0。超时为零被解释为无限超时。

因此,当您使用 0 时setSoTimeout(),它只会阻塞接收()。

于 2013-03-26T15:25:08.167 回答