3
java.io.EOFException: no more data available - expected end tag </stream:stream> to close start tag <stream:stream> from line 1, parser stopped on END_TAG seen ...</mechanisms></stream:features>... @1:344
at org.xmlpull.mxp1.MXParser.fillBuf(MXParser.java:3035)
at org.xmlpull.mxp1.MXParser.more(MXParser.java:3046)
at org.xmlpull.mxp1.MXParser.nextImpl(MXParser.java:1144)
at org.xmlpull.mxp1.MXParser.next(MXParser.java:1093)
at org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:279)
at org.jivesoftware.smack.PacketReader.access$000(PacketReader.java:44)
at org.jivesoftware.smack.PacketReader$1.run(PacketReader.java:70)

//资源:https ://developer.android.com/google/gcm/ccs.html#implement

我已经尝试了 android 网站中给出的确切代码,但它抛出了文件末尾异常,我认为这是 MXParser 中的一些错误(虽然不太确定)。如果 smack XMPP 库是问题所在,是否还有其他可用于 GCM CCS 的 xmpp 库?谁能帮我解决这个问题。在下图中,您可以看到结束流标签未关闭,但这就是我接收数据包的方式。

发送和接收数据包输出窗口:

发送数据包

收到的数据包

4

2 回答 2

1

由于某种原因,我重新启动了机器并自行修复

于 2013-10-02T08:43:30.037 回答
1

此处描述了一种可能的原因:

您需要发送一些心跳 - 在 XMPP 或 TCP 级别 - 以便您的端点可以检测(或阻止)关闭的 TCP。许多路由器/NAT 无法发送 RST 或 FIN,只是断开 TCP 连接。

例如,您可以使用PingManager ( smack-extensions ) 来实现这样的心跳。

于 2014-12-26T17:06:18.677 回答