Smack 4.1在回复超时内无响应

我在我的Android应用程序中使用以下代码:

Thread D= new Thread(new Runnable() { @Override public void run() { SmackConfiguration.setDefaultPacketReplyTimeout(10000); XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder() .setUsernameAndPassword("admin", "password") .setServiceName("192.168.0.200") .setHost("192.168.0.200") .setPort(5223).setSecurityMode(SecurityMode.ifpossible) .build(); AbstractXMPPConnection conn2 = new XMPPTCPConnection(config); try { conn2.connect(); conn2.login(); Presence presence = new Presence(Presence.Type.unavailable); presence.setStatus("Gone fishing"); // Send the packet (assume we have an XMPPConnection instance called "con"). conn2.sendStanza(presence); } catch (SmackException | IOException | XMPPException e) { // TODO Auto-generated catch block e.printStackTrace(); Log.d("TAG",e.toString()); } ChatManager chatmanager = ChatManager.getInstanceFor(conn2); Chat newChat = chatmanager.createChat("harsh@192.168.0.200"); try { newChat.sendMessage("Howdy!"); } catch (NotConnectedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); D.start(); 

这是返回此错误:

05-14 18:07:48.030:D / TAG(19470):org.jivesoftware.smack.SmackException $ NoResponseException:在回复超时内没有收到响应。 超时为10000毫秒(~10秒)。 使用filter:未使用filter或filter为“null”。

我已经在192.168.0.200设置了本地服务器。 谁能告诉我问题是什么?

我正在使用这些库:

在此处输入图像描述

我已成功连接到本地openfire服务器并在没有SSL的情况下登录。 这是我的代码

 public class NewClientActivity extends Activity { EditText etUsername, etPassword; Button bSubmit; AbstractXMPPConnection mConnection; ConnectionListener connectionListener = new ConnectionListener() { @Override public void connected(XMPPConnection xmppConnection) { Log.d("xmpp", "connected"); try { SASLAuthentication.registerSASLMechanism(new SASLMechanism() { @Override protected void authenticateInternal(CallbackHandler callbackHandler) throws SmackException { } @Override protected byte[] getAuthenticationText() throws SmackException { byte[] authcid = toBytes('\u0000' + this.authenticationId); byte[] passw = toBytes('\u0000' + this.password); return ByteUtils.concact(authcid, passw); } @Override public String getName() { return "PLAIN"; } @Override public int getPriority() { return 410; } @Override public void checkIfSuccessfulOrThrow() throws SmackException { } @Override protected SASLMechanism newInstance() { return this; } }); mConnection.login(); } catch (XMPPException e) { runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(NewClientActivity.this, "Incorrect username or password", Toast.LENGTH_LONG).show(); } }); e.printStackTrace(); } catch (SmackException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } @Override public void authenticated(XMPPConnection xmppConnection, boolean b) { Log.d("xmpp", "authenticated"); runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(NewClientActivity.this,"Logged in successfully...",Toast.LENGTH_LONG ).show(); } }); } @Override public void connectionClosed() { Log.d("xmpp", "connection closed"); } @Override public void connectionClosedOnError(Exception e) { Log.d("xmpp", "cononection closed on error"); } @Override public void reconnectionSuccessful() { Log.d("xmpp", "reconnection successful"); } @Override public void reconnectingIn(int i) { Log.d("xmpp", "reconnecting in " + i); } @Override public void reconnectionFailed(Exception e) { Log.d("xmpp", "reconnection failed"); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_new_client); findViews(); } private void findViews() { etUsername = (EditText) findViewById(R.id.etUsername); etPassword = (EditText) findViewById(R.id.etPassword); bSubmit = (Button) findViewById(R.id.bSubmit); bSubmit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String[] params = new String[]{etUsername.getText().toString(), etPassword.getText().toString()}; new Connect().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params); } }); } class Connect extends AsyncTask { @Override protected Void doInBackground(String... params) { XMPPTCPConnectionConfiguration config = null; XMPPTCPConnectionConfiguration.Builder builder = XMPPTCPConnectionConfiguration.builder(); builder.setServiceName("192.168.1.60").setHost("192.168.1.60") .setDebuggerEnabled(true) .setPort(5222) .setUsernameAndPassword(params[0], params[1]) .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled) .setCompressionEnabled(false); config = builder.build(); mConnection = new XMPPTCPConnection(config); try { //mConnection.setPacketReplyTimeout(10000); mConnection.addConnectionListener(connectionListener); mConnection.connect(); } catch (SmackException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (XMPPException e) { e.printStackTrace(); } return null; } } } 

我刚从我的请求及其工作中删除了.setPort

 private class MyLoginTask extends AsyncTask { @Override protected String doInBackground(String... params) { // Create a connection to the jabber.org server. XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder() .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled) .setUsernameAndPassword(USERNAME, PASSWORD) .setHost(HOST) //.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled) .setServiceName(HOST) .setDebuggerEnabled(true) // to view what's happening in detail .build(); AbstractXMPPConnection conn1 = new XMPPTCPConnection(config); conn1.setPacketReplyTimeout(30000); try { conn1.connect(); if(conn1.isConnected()) { Log.w("app", "conn done"); } conn1.login(); if(conn1.isAuthenticated()) { Log.w("app", "Auth done"); } } catch (Exception e) { Log.w("app", e.toString()); } return ""; } @Override protected void onPostExecute(String result) { } } 

尝试这个 :

 public static void main(String[] args) throws IOException, XMPPException, SmackException, NoSuchAlgorithmException { XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder() .setServiceName("olx.intr") .setDebuggerEnabled(true) .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled) .setHost("10.2.2.107") .setPort(5222) .setUsernameAndPassword("dhiren","olxindia") .build(); AbstractXMPPConnection conn2 = new XMPPTCPConnection(config); conn2.connect(); SASLMechanism mechanism = new SASLDigestMD5Mechanism(); SASLAuthentication.registerSASLMechanism(mechanism); SASLAuthentication.blacklistSASLMechanism("SCRAM-SHA-1"); SASLAuthentication.unBlacklistSASLMechanism("DIGEST-MD5"); try { conn2.login(); }catch (Exception e){ e.printStackTrace(); } boolean authenticated = conn2.isAuthenticated(); System.out.println(authenticated); }