在Wifi上时,即使手机确实具有网络连接,我们Android应用程序中的XMPPTCPConnection有时也会抛出“ SocketException:计算机不在网络上”。当用户关闭Wifi并再次打开时,该应用程序即可立即连接。 发生此异常时,XMPPTCPConnection对象将断开连接,并设置为NULL并在尝试重新连接之前重新创建。但这没有帮助。下面是代码段。
try {
if (null != connection)
connection.disconnect();
} catch (Exception e) {
}
connection = null;
XMPPTCPConnectionConfiguration connConfig = createConfiguration();
if (null != connConfig)
{
connection = new XMPPTCPConnection(connConfig);
try {
connection.connect();
} catch (StackOverflowError e) {
e.printStackTrace();
} catch (XMPPException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
请让我知道如何解决此问题。感谢您的帮助。
这是堆栈跟踪。
org.jivesoftware.smack.SmackException $ ConnectionException:以下地址失败:'.com:5223'失败,因为java.net.SocketException:计算机不在网络上 在org.jivesoftware.smack.tcp.XMPPTCPConnection.connectUsingConfiguration(XMPPTCPConnection.java:596) 在org.jivesoftware.smack.tcp.XMPPTCPConnection.connectInternal(XMPPTCPConnection.java:830) 在org.jivesoftware.smack.AbstractXMPPConnection.connect(AbstractXMPPConnection.java:360) 在com.sarkms.cclib.XMPPConnLib.connectToChatServer(XMPPConnLib.java:184) 在com.sarkms.cclib.XMPPConnHelper.connectToChatServer(XMPPConnHelper.java:331) 在com.sarkms.cclib.XMPPConnHelper.LoginToChatServer(XMPPConnHelper.java:383) 在com.sarkms.cclib.ConnChkRun.runConnectionCheck(ConnChkRun.java:83) 在com.sarkms.cclib.ops.Connection.runConnection(Connection.java:142) 在com.sarkms.cclib.MessageService $ 1.run(MessageService.java:39)