在android上使用asmack和bonjour的Xmpp连接

时间:2012-06-04 14:49:12

标签: android bonjour smack asmack

我正在尝试为IM做一个无服务器的应用程序。我使用apple bonjour协议来发现xmpp服务。但是一旦我得到那些我就无法连接到我的主机(linux计算机使用pidgin + bonjour)。

这是我的代码(取自here):

public class Xmpp extends AsyncTask<Void, Void, Void>
{
    @Override
    protected Void doInBackground(Void... arg0)
    {
        ConnectionConfiguration connConfig =
                new ConnectionConfiguration("192.168.0.11", 5298, "bonjour");
        XMPPConnection connection = new XMPPConnection(connConfig);
         try
        {
            // Connect to the server
            connection.connect();
             // Most servers require you to login before performing other tasks.
            connection.login("grea08", "mypass");
            // Start a new conversation with John Doe and send him a message.
            Chat chat = connection.getChatManager().createChat("grea09@192.168.0.11", new MessageListener() {


                 public void processMessage(Chat chat, Message message) {
                     // Print out any messages we get back to standard out.
                     Log.v(getClass().getName(), "Received message: " + message);
                 }
             });

            chat.sendMessage("Howdy!");
        } catch (XMPPException e)
        {
            // TODO Auto-generated catch block
            Log.e(getClass().getName(), "Xmpp error !", e);
        }
         // Disconnect from the server
         connection.disconnect();
        return null;
    }

}

我有一个XmppException“没有来自服务器的回应”。我认为主机不是XMPP服务器,我们必须使用协议this方式。

3 个答案:

答案 0 :(得分:1)

Smack和aSmack不支持XEP-0174 (又称链接本地或无服务器消息传递)。 Jonas patches从未进入后备箱。要跟踪的相应问题是SMACK-262

答案 1 :(得分:1)

Gibberbot开源项目支持XMPP Bonjour无服务器通信。

它还can be installed from Google Play

也许您可以查看其来源并为您的应用提取相关代码。 : - )

答案 2 :(得分:0)

尝试使用配置创建XMPPConnection

ConnectionConfiguration config = new ConnectionConfiguration("192.189.0.11", port);
//Set optional configurations on the config object.
Connection connection = new XMPPConnection(config);