实现基于GCM的XMPP应用服务器时,使用Smack时无法连接XMPP服务器:EOF异常

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 我试过了安卓网站上提供的代码,但是它抛出了文件末尾异常,我认为这可能是MXParser中的某个错误(不确定)。如果Smack XMPP库是问题所在,是否有其他XMPP库可用于GCM CCS?请问有人能帮我解决这个问题吗?您可以在下面的图片中看到端流标记未关闭,但这就是我收到的数据包。
发送和接收的数据包 输出窗口: sent packets received packets

请问您能提供给我代码吗? - Smit Patel
2个回答

1

这可能的原因在这里描述:

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

例如,您可以使用PingManagersmack-extensions)来实现此类心跳。


1
由于某种原因,我重新启动了机器,问题自行解决。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接