Android基于XMPP Smack Openfire开发IM【一】登录openfire服务器

第一,安装好openfire后,启动openfire进入后台。我的登录名:admin  密码:admin.
如下:
[img]

[/img]



第二、创建一个用户,我 这里注册的用户名:test 密码:test.
[img]

[/img]


第三,创建android客户端,代码如下:( 我的电脑的ip是:192.168.0.124,测试的时候改成自己的)
Java代码 复制代码  收藏代码
  1. package com.example.openfiretest;   
  2.   
  3. import android.os.Bundle;   
  4. import android.app.Activity;   
  5. import android.view.Menu;   
  6. import android.view.View;   
  7. import android.view.View.OnClickListener;   
  8. import android.view.Window;   
  9. import android.widget.CheckBox;   
  10. import android.widget.EditText;   
  11. import android.widget.Toast;   
  12.   
  13. public class MainActivity extends Activity {   
  14.   
  15.     private EditText accountEditText;   
  16.     private EditText passwordEditText;   
  17.   
  18.     public void onCreate(Bundle savedInstanceState) {   
  19.         super.onCreate(savedInstanceState);   
  20.         requestWindowFeature(Window.FEATURE_NO_TITLE);   
  21.         setContentView(R.layout.activity_main);   
  22.         accountEditText = (EditText) findViewById(R.id.username);   
  23.         passwordEditText = (EditText) findViewById(R.id.password);   
  24.   
  25.         findViewById(R.id.login).setOnClickListener(new OnClickListener() {   
  26.             public void onClick(View v) {   
  27.                 String account = accountEditText.getText().toString();   
  28.                 String password = passwordEditText.getText().toString();   
  29.                 if (account.equals("") || password.equals("")) {   
  30.                     Toast.makeText(MainActivity.this"账号或密码不能为空!",   
  31.                             Toast.LENGTH_SHORT).show();   
  32.                 } else {   
  33.                     ClientConServer ccs = new ClientConServer(MainActivity.this);   
  34.                     boolean b = ccs.login(account, password);   
  35.                     // 如果登录成功   
  36.                     if (b) {   
  37.                         Toast.makeText(MainActivity.this"登陆成功!",   
  38.                                 Toast.LENGTH_SHORT).show();   
  39.                         // startActivity(new  
  40.                         // Intent(LoginActivity.this,MainActivity.class));  
  41.                         // MainActivity.account=account;  
  42.                     } else {   
  43.                         Toast.makeText(MainActivity.this"登陆失败!",   
  44.                                 Toast.LENGTH_SHORT).show();   
  45.                     }   
  46.                 }   
  47.             }   
  48.         });   
  49.     }   
  50. }  
package com.example.openfiretest;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {

	private EditText accountEditText;
	private EditText passwordEditText;

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.activity_main);
		accountEditText = (EditText) findViewById(R.id.username);
		passwordEditText = (EditText) findViewById(R.id.password);

		findViewById(R.id.login).setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				String account = accountEditText.getText().toString();
				String password = passwordEditText.getText().toString();
				if (account.equals("") || password.equals("")) {
					Toast.makeText(MainActivity.this, "账号或密码不能为空!",
							Toast.LENGTH_SHORT).show();
				} else {
					ClientConServer ccs = new ClientConServer(MainActivity.this);
					boolean b = ccs.login(account, password);
					// 如果登录成功
					if (b) {
						Toast.makeText(MainActivity.this, "登陆成功!",
								Toast.LENGTH_SHORT).show();
						// startActivity(new
						// Intent(LoginActivity.this,MainActivity.class));
						// MainActivity.account=account;
					} else {
						Toast.makeText(MainActivity.this, "登陆失败!",
								Toast.LENGTH_SHORT).show();
					}
				}
			}
		});
	}
}



Java代码 复制代码  收藏代码
  1. package com.example.openfiretest;   
  2.   
  3. import org.jivesoftware.smack.ConnectionConfiguration;   
  4. import org.jivesoftware.smack.XMPPConnection;   
  5. import org.jivesoftware.smack.XMPPException;   
  6.   
  7. import android.content.Context;   
  8.   
  9. public class ClientConServer {   
  10.     private static int PORT=5222;   
  11.     private Context context;   
  12.     public ClientConServer(Context context){   
  13.         this.context=context;   
  14.   
  15.     }   
  16.        
  17.     public boolean login(String a,String p){   
  18.         ConnectionConfiguration config = new ConnectionConfiguration("192.168.0.124", PORT);   
  19.         /** 是否启用安全验证 */  
  20.         config.setSASLAuthenticationEnabled(false);   
  21.         /** 是否启用调试 */  
  22.         //config.setDebuggerEnabled(true);  
  23.         /** 创建connection链接 */  
  24.         XMPPConnection connection = new XMPPConnection(config);   
  25.         try {   
  26.             /** 建立连接 */  
  27.             connection.connect();   
  28.             /** 登录*/  
  29.             connection.login(a, p);   
  30.                             /** 设置状态 */  
  31.             Presence presence = new Presence     (Presence.Type.available);   
  32.             presence.setStatus("Q我吧");   
  33.             connection.sendPacket(presence);   
  34.   
  35.   
  36.   
  37.             /** 开启读写线程,并加入到管理类中*/  
  38.             //ClientSendThread cst=new ClientSendThread(connection);  
  39.             //cst.start();   
  40.             //ManageClientThread.addClientSendThread(a, cst);  
  41.             return true;   
  42.         } catch (XMPPException e) {   
  43.             e.printStackTrace();   
  44.         }   
  45.         return false;   
  46.      }   
  47. }  
package com.example.openfiretest;

import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;

import android.content.Context;

public class ClientConServer {
	private static int PORT=5222;
	private Context context;
	public ClientConServer(Context context){
		this.context=context;

	}
	
	public boolean login(String a,String p){
		ConnectionConfiguration config = new ConnectionConfiguration("192.168.0.124", PORT);
		/** 是否启用安全验证 */
		config.setSASLAuthenticationEnabled(false);
		/** 是否启用调试 */
        //config.setDebuggerEnabled(true);
        /** 创建connection链接 */
		XMPPConnection connection = new XMPPConnection(config);
		try {
			/** 建立连接 */
			connection.connect();
			/** 登录*/
			connection.login(a, p);
                            /** 设置状态 */
	        Presence presence = new Presence     (Presence.Type.available);
	        presence.setStatus("Q我吧");
	        connection.sendPacket(presence);



			/** 开启读写线程,并加入到管理类中*/
			//ClientSendThread cst=new ClientSendThread(connection);
			//cst.start();
			//ManageClientThread.addClientSendThread(a, cst);
			return true;
		} catch (XMPPException e) {
			e.printStackTrace();
		}
		return false;
	 }
}


AndroidManifest.xml中添加:
Java代码 复制代码  收藏代码
  1. <uses-permission android:name="android.permission.INTERNET" />  
<uses-permission android:name="android.permission.INTERNET" />



第四,启动android项目,用test用户登录,密码也是test,提示登录成功。
[img]

[/img]


第五,在openfire中的会话中多了一个用户:test
[img]

[/img]

android的客户端使用XMPP协议进行通信需要的jar包:
  • 大小: 53.3 KB
  • 大小: 11.5 KB
  • 大小: 28.2 KB
  • 大小: 12.1 KB

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值