为什么我无法通过android

如何解决为什么我无法通过android

虽然我可以使用pidgin登录,但我无法通过android仿真器登录到ejabberd服务器。以下是我的android代码,它尽可能少,并且包含一些已弃用的API,仅用于学习目的(我不认为过时的API是问题的一部分,但不是专家,是可以教的)。我已经尝试过thisthis和许多others,但是没有解决方案的见解。

Android代码

 import androidx.appcompat.app.AppCompatActivity;
 import android.os.Bundle;
 import android.os.AsyncTask;
 import android.os.Bundle;
 //import android.support.v7.app.AppCompatActivity;
 import android.util.Log;

 import org.jivesoftware.smack.AbstractXMPPConnection;
 import org.jivesoftware.smack.ConnectionConfiguration;
 import org.jivesoftware.smack.MessageListener;
 import org.jivesoftware.smack.chat.Chat;
 import org.jivesoftware.smack.chat.ChatManager;
 import org.jivesoftware.smack.chat.ChatManagerListener;
 import org.jivesoftware.smack.chat.ChatMessageListener;
 import org.jivesoftware.smack.packet.Message;
 import org.jivesoftware.smack.tcp.XMPPTCPConnection;
 import org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration;
 import org.jxmpp.stringprep.XmppStringprepException;
 import org.minidns.dnsserverlookup.android21.AndroidUsingLinkProperties;

 import java.net.InetAddress;
 import java.net.UnknownHostException;

 public class MainActivity extends AppCompatActivity {

     //InetAddress addr = InetAddress.getByName("127.0.0.1");

     public MainActivity() throws UnknownHostException {
     }

     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);

         MyLoginTask task = new MyLoginTask();
         task.execute("");
     }


     private class MyLoginTask extends AsyncTask<String,String,String> {


         @Override
         protected String doInBackground(String... params) {
             // Create a connection to the jabber.org server.
             XMPPTCPConnectionConfiguration config = null;
             try {
            //try {

            //AndroidUsingLinkProperties.setup(getApplicationContext());
                     config = XMPPTCPConnectionConfiguration.builder()
                              .setUsernameAndPassword("cray","1234")
                            //.setServiceName()
                            //.setHost("192.168.0.104")
                             .setHost("10.0.2.2")
                             .setXmppDomain("localhost")
                           //.setHost("localhost")
                                 //.setHostAddress(InetAddress.getByName("localhost"))
                        
 .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)
                            //.setServiceName("localhost")
                             .setPort(5280)
                           //.setDebuggerEnabled(true) // to view what's happening in detail
                        .build();
                 //} catch (UnknownHostException e) {
                //    e.printStackTrace();
                //}
             } catch (XmppStringprepException e) {
                 //e.printStackTrace();
               Log.e("XMMP_APP","Exception",e);
            }

             AbstractXMPPConnection conn1 = new XMPPTCPConnection(config);
             try {
                 conn1.connect();
                 if(conn1.isConnected())
                {
                     Log.w("app","------connetion successful-------");
                 }
                 conn1.login();
                 if(conn1.isAuthenticated())
                 {
                     Log.w("app","Auth done");
                     ChatManager chatManager =     ChatManager.getInstanceFor(conn1);
                     chatManager.addChatListener(
                             new ChatManagerListener() {
                                 @Override
                                 public void chatCreated(Chat chat,boolean createdLocally)
                                {

                                    chat.addMessageListener(new ChatMessageListener()
                                    {
                                         @Override
                                         public void processMessage(Chat chat,Message message) {
                                             System.out.println("Received message: "
                                                + (message != null ? message.getBody() : "NULL"));

                                    }


                                });

                                Log.w("app",chat.toString());
                            }
                        });

                 }
             }
             catch (Exception e) {
                 //Log.w("app",e.toString());
                 Log.e("XMMP_APP",e);
             }

             return "";
         }


         @Override
         protected void onPostExecute(String result) {
        // execution of result of Long time consuming operation
         }

    }
 }






    
         

我尝试确认用户是否使用 ejabberdctl connected_user_number 或仅使用 ejabberdctl connected_user 登录了ejabberd服务器,但是我看不到任何用户登录使用pidgin客户端轻松登录。

这是错误(堆栈跟踪)

  08-23 11:57:10.981 2681-2681/? I/art: Not late-enabling -Xcheck:jni (already on)
 08-23 11:57:11.002 2681-2687/? E/art: Failed writing handshake bytes (-1 of 14): Broken pipe
 08-23 11:57:11.002 2681-2687/? I/art: Debugger is no longer active
08-23 11:57:11.002 2681-2681/? W/System: ClassLoader referenced unknown path: /data/app/com.comcast.redfire-1/lib/x86
08-23 11:57:11.067 2681-2681/? W/art: Before Android 4.1,method android.graphics.PorterDuffColorFilter   androidx.vectordrawable.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter,android.content.res.ColorStateList,android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
08-23 11:57:13.853 2681-2681/com.comcast.redfire I/art: Rejecting re-init on previously-failed class java.lang.Class<androidx.core.view.ViewCompat$2>
08-23 11:57:13.853 2681-2681/com.comcast.redfire I/art: Rejecting re-init on previously-failed class java.lang.Class<androidx.core.view.ViewCompat$2>
08-23 11:57:14.052 2681-2704/com.comcast.redfire D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true
08-23 11:57:14.093 2681-2704/com.comcast.redfire I/OpenGLRenderer: Initialized EGL,version 1.4
08-23 11:57:14.095 2681-2704/com.comcast.redfire W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED,retrying without...
08-23 11:57:14.292 2681-2704/com.comcast.redfire D/EGL_emulation: eglCreateContext: 0xb405abc0: maj 2 min 0 rcv 2
08-23 11:57:14.307 2681-2704/com.comcast.redfire D/EGL_emulation: eglMakeCurrent: 0xb405abc0: ver 2 0 (tinfo 0xaff49510)
08-23 11:57:14.424 2681-2704/com.comcast.redfire D/EGL_emulation: eglMakeCurrent: 0xb405abc0: ver 2 0 (tinfo 0xaff49510)
08-23 11:57:30.872 2681-2703/com.comcast.redfire W/app: org.jivesoftware.smack.SmackException$ConnectionException: The following addresses failed: '10.0.2.2:5222' failed because: org.minidns.util.MultipleIoException: null,failed to connect to /10.0.2.3 (port 53) after 5000ms: isConnected failed: ECONNREFUSED (Connection refused),null,failed to connect to /8.8.8.8 (port 53) after 5000ms: isConnected failed: ENETUNREACH (Network is unreachable),sendto failed: ENETUNREACH (Network is unreachable),failed to connect to /2001:4860:4860::8888 (port 53) after 5000ms: connect failed: ENETUNREACH (Network is unreachable),failed to connect to g.root-servers.net/192.112.36.4 (port 53) after 5000ms: isConnected failed: ENETUNREACH (Network is unreachable),failed to connect to i.root-servers.net/2001:7fe::53 (port 53) after 5000ms: connect failed: ENETUNREACH (Network is unreachable)

有人可以帮我解决这个难题吗?谢谢您的时间和关注。很抱歉,格式不正确且信息不完整。

我认为问题出在10.0.2.2。由于我使用的是Android模拟器,因此建议不要使用127.0.0.1,而应使用10.0.2.2。如您所见,10.0.2.2不会发送回数据包。如何解决此问题?

解决方法

很可能您没有有效的DNS设置。我强烈建议您将ejabberd安装在具有正确网络设置并且最重要的是域+有效证书的服务器上。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-