无法通过sm击连接到ejabberd服务器

问题描述 投票:0回答:1

我正在使用ejabberd设置聊天服务,并使用smack为Android设备构建XMPP客户端。

这里有一些重要的细节。

服务器操作系统:ubuntu 18.04服务器托管为本地主机(jid格式:alice @ localhost)。服务器系统IP:192.168.4.162

客户:赞4.3.1通过USB调试使用外部电话:诺基亚3.1 Plus。

这是我的代码

这是我尝试过的一些配置。

  private class MyLoginTask extends AsyncTask<String, String, String> {
        @Override
        protected String doInBackground(String... params) {
            // Create a connection to the jabber.org server.
            InetAddress addr = null;
            try{
                addr = InetAddress.getByName("192.168.4.162");

            }catch(UnknownHostException e){
                e.printStackTrace();
            }
            XMPPTCPConnectionConfiguration config = null;
            DomainBareJid serviceName = null;

            try{
                serviceName = JidCreate.domainBareFrom("localhost");
                System.out.println("serviceName: "+serviceName);
            }catch(XmppStringprepException e){
                e.printStackTrace();
            }

            HostnameVerifier verifier = new HostnameVerifier() {
                @Override
                public boolean verify(String hostname, SSLSession session) {
                    return true;
                }
            };

//            ConnectionConfiguration connConfig = new ConnectionConfiguration("talk.google.com", PORT, SERVICE);
            try{
                config = XMPPTCPConnectionConfiguration.builder()
                        .setUsernameAndPassword("alice", "9009")
                        .setHost("192.168.4.162")                        
         .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)
                        .setXmppDomain("localhost")
                        .setHostnameVerifier(verifier)
                        .setHostAddress(addr)
                        .setPort(5222)
                        .build();
            }catch(XmppStringprepException e){
                e.printStackTrace();
            }

            AbstractXMPPConnection conn1 = new XMPPTCPConnection(config);
            try {
                System.out.println("Connecting.......");                AndroidUsingLinkProperties.setup(getApplicationContext());
                conn1.connect().login();
                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) {
        }

     }

我在结果上方尝试过的配置是:

org.jivesoftware.smack.SmackException$ConnectionException: The following addresses failed: '192.168.4.162:5222' failed because: /192.168.4.162 exception: java.net.ConnectException: failed to connect to /192.168.4.162 (port 5222) from /192.168.4.182 (port 39568) after 30000ms: isConnected failed: EHOSTUNREACH (No route to host)

但是我能够通过任何其他客户端(psi,gajim,我的网络应用(BOSH连接))成功建立与服务器的连接。

如果是网络问题,则可能会有所帮助:

$ nmap localhost
Starting Nmap 7.80 ( https://nmap.org ) at 2019-08-28 18:00 IST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000056s latency).
Not shown: 992 closed ports
PORT     STATE SERVICE
111/tcp  open  rpcbind
139/tcp  open  netbios-ssn
445/tcp  open  microsoft-ds
631/tcp  open  ipp
5222/tcp open  xmpp-client
5269/tcp open  xmpp-server
5280/tcp open  xmpp-bosh
8600/tcp open  asterix

Nmap done: 1 IP address (1 host up) scanned in 0.09 seconds
xmpp ejabberd smack
1个回答
0
投票

我去过那里,偶然发现我的电话和ejabberd服务器在不同的网络上。在这种情况下,它们应位于同一网络上。确保您在同一网络上,并且该错误应消失。

© www.soinside.com 2019 - 2024. All rights reserved.