1

我正在使用 Java Smack API 开发应用程序。我使用 PacketCollector.java 类的 nextResult() 方法来接收下一条传入消息。(根据文档,此方法会阻塞,直到有输入。)

http://www.igniterealtime.org/builds/smack/docs/latest/javadoc/org/jivesoftware/smack/PacketCollector.html

我有一个问题,如果连接突然中断(例如,由于网络断开等),我怎么知道或如何捕获异常?

4

1 回答 1

1

调用将nextResult()一直等到与过滤器匹配的数据包到达。查看源代码,我认为只要您使用相同的连接实例,它甚至会在断开连接并重新连接后等待。

你不应该真正使用nextResult()nextResult(long)而是使用。nextResult()如果连接由于某种原因断开连接并且没有充分的理由使用nextResult()而不是nextResult(long)使用合理的超时值,则不会引发异常。

于 2012-09-01T23:11:47.950 回答