介绍:

XMPP :XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测。 

smack:是一个开源包,易于使用的XMPP(jabber)客户端类库

openfire :作为服务器提供服务。

openfire 安装:

服务下载地址:http://www.igniterealtime.org/projects/openfire/

安装配置过程https://mp.csdn.net/postedit/84329302

Spark

下载地址:https://spark.en.softonic.com/

spark是一个即时通信客户端可使用spark,可以用来测试openfire安装是否有效,如果有信心,可以不用测试。

如果安装后登陆不上,可以参考:https://blog.csdn.net/oniejianjun/article/details/72673782。

 

有了服务器后我们就可以编写安卓客户端来连接这个服务器登陆了

1、在gradle中配置smack所需要的包。

compile 'org.igniterealtime.smack:smack-android:4.1.4'compile 'org.igniterealtime.smack:smack-tcp:4.1.4'compile 'org.igniterealtime.smack:smack-im:4.1.4'compile 'org.igniterealtime.smack:smack-extensions:4.1.4'

2、测试连接类MyXMPPTCPConnection

public class MyXMPPTCPConnection extends XMPPTCPConnection {    private static MyXMPPTCPConnection connection;    private MyXMPPTCPConnection(XMPPTCPConnectionConfiguration config) {        super(config);    }    public static synchronized MyXMPPTCPConnection getInstance() {        //初始化XMPPTCPConnection相关配置        if (connection == null) {            XMPPTCPConnectionConfiguration.Builder builder = XMPPTCPConnectionConfiguration.builder();            //设置连接超时的最大时间            builder.setConnectTimeout(10000);            //设置登录openfire的用户名和密码            builder.setUsernameAndPassword("admin", "admin");            //设置安全模式            builder.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);            builder.setResource("Android");            //设置服务器名称            builder.setServiceName("127.0.0.1");            //设置主机地址            builder.setHost("192.168.10.104");            //设置端口号            builder.setPort(5222);            //是否查看debug日志            builder.setDebuggerEnabled(true);            connection = new MyXMPPTCPConnection(builder.build());        }        return connection;    }}

其中:builder.setHost("192.168.10.104");是本机的ip,你可以在cmd命令中输入ipconfig查询自己的ip。还有一点需要注意的是,我用的本地电脑配的openfire服务器。之前我用真机测试一直报错,连接超时,因为不在一个局域网,用模拟器测试就没有问题。

2、主函数测试连接:

public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        new Thread(new Runnable() {            @Override            public void run() {                MyXMPPTCPConnection connection = MyXMPPTCPConnection.getInstance();                try {                    connection.connect();                    Log.i("test==", "connect");                    connection.login();                    Log.i("test==", "login");                } catch (Exception e) {                }        }).start();    }}

注意:1、主线程直接访问,会报错,需要新启动一个线程。2、记得为app申请网络权限

 

 

如何判断登录成能,在openfire服务器的管理界面:http://127.0.0.1:9090/user-summary.jsp

中看到自己的头像绿了(感觉那里不对),处于登录状态

更多相关文章

  1. tcping测试服务器TCP端口
  2. Android自动测试之monkeyrunner工具(二)
  3. android osmdroid 实现谷歌地图之定位 替换为其他
  4. (jenkins)hudson平台搭建android项目持续化集成以及基于NativeDriv
  5. Android(安卓)5.0学习之定义阴影
  6. Activity伪造Dialog的时候不能全屏显示
  7. android自动化测试工具之DroidPilot
  8. Mars服务器和客户端demo运行教程
  9. Android中TextView文字设置不同的颜色

随机推荐

  1. Android(安卓)阻断adb install
  2. Android(安卓)Handler Message 通信机制
  3. android中webview开启了硬件加速后会出现
  4. Android中的表格布局TableLayout
  5. android Vibrator使用示例
  6. Android屏幕相关设置
  7. Android(安卓)ArrayAdapter的使用
  8. Android:EventBus-3 基本使用
  9. 【Android】Fragment将废弃onActivityCre
  10. Gradle使用手册