前面讲了本地如何搭建XMPP环境 其实我不懂 也没认真的好好研究原理 这肯定是要看的 不过先上手把代码拼上去 再细细debug 一点点的理解 这两篇的博客也是想帮助那些和我过去一样 认为XMPP是一个多高端多遥远的东西 我想告诉那些人的是 其实就在你手边
因为我也才接触 不敢保证代码规范 以及是否有隐藏的bug 各位如果有缘 看过有帮助就好 没有帮助笑笑就算了
这里需要使用到插件 asmack-jse.jar
首先最重要的是配置连接
public static String host = "192.168.1.101";
public static int port = 5222;
static XMPPConnection connection;
//依葫芦画瓢
static{
XMPPConnection.DEBUG_ENABLED = true;
ConnectionConfiguration configuration = new ConnectionConfiguration(host, port);
connection = new XMPPConnection(configuration);
connection.DEBUG_ENABLED = true;
ProviderManager pm = ProviderManager.getInstance();
configure(pm);
}
注意这里的host 貌似加http会出问题 应该根本就不是用的http协议吧 端口默认是5222 你可以去openfire服务器配置中查询
接下来注册和登录就好说了
注册
Registration reg = new Registration();
reg.setType(IQ.Type.SET);
reg.setTo(MainActivity.connection.getServiceName());
reg.setUsername(usernameEdt.getText().toString());
reg.setPassword(passwdEdt.getText().toString());
reg.addAttribute("android", "geolo_createUser_android");
System.out.println("reg:" + reg);
PacketFilter filter = new AndFilter(new PacketIDFilter(reg
.getPacketID()), new PacketTypeFilter(IQ.class));
PacketCollector collector = MainActivity.connection
.createPacketCollector(filter);
MainActivity.connection.sendPacket(reg);
result = (IQ) collector.nextResult(SmackConfiguration
.getPacketReplyTimeout());
// Stop queuing results
collector.cancel();// 停止请求results(是否成功的结果)
if (result == null) {
Toast.makeText(getApplicationContext(), "服务器没有返回结果",
Toast.LENGTH_SHORT).show();
} else if (result.getType() == IQ.Type.ERROR) {
if (result.getError().toString().equalsIgnoreCase(
"conflict(409)")) {
Toast.makeText(getApplicationContext(), "这个账号已经存在",
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "注册失败",
Toast.LENGTH_SHORT).show();
}
} else if (result.getType() == IQ.Type.RESULT) {
Toast.makeText(getApplicationContext(), "恭喜你注册成功",
Toast.LENGTH_SHORT).show();
}
登录
MainActivity.connection.login(usernameEdt.getText().toString(), pwdEdt.getText().toString());
Button loginBtn = (Button) findViewById(R.id.btn_login);
loginBtn.setEnabled(false);
loginBtn.setText("登录成功");
代码太凌乱 上来格式都变了 还是整个项目看着方便
相关推荐
android下的XMPP对应smack-4.2.1,实现登录,注册,发单聊,加聊天室,发群聊等简单功能
### XMPP重连与注册两遍问题解析及解决方案 #### 一、问题背景 XMPP (Extensible Messaging and Presence Protocol) 是一种基于XML的即时通讯协议。它支持客户端到服务器的连接,同时也支持服务器到服务器的连接。...
XMPP服务器如ejabberd、Openfire等,负责处理用户的注册、登录、消息路由等功能,而客户端则负责用户界面和与服务器的交互。 即时聊天客户端的开发通常涉及以下关键组件: 1. **连接管理**:客户端首先需要连接到...
基本的登录和注册模块demo,xmpp连接,tomcat
在这个项目中,我们利用Smack-4.2.1库来实现在Android上使用XMPP进行各种交互,如登录、注册、发送单聊消息、加入聊天室和发送群聊消息等基本功能。 首先,我们需要了解Smack-4.2.1。Smack是一个开源的Java库,专门...
1. **注册与登录**:用户可以通过XMPP服务器注册并登录账户。 2. **好友系统**:添加、删除好友,查看好友列表。 3. **发送与接收消息**:实现一对一的私聊和群组聊天。 4. **在线状态**:显示用户在线、离线状态,...
1. **XMPPConnection**:表示与服务器的连接,负责登录、登出和断开连接操作。 2. **Presence**:表示用户的状态,如在线、离线、忙碌等。 3. **Message**:用于发送和接收消息的类,可以包含文本、文件或其他数据。...
- 登录:使用XMPPConnection对象的login()方法登录服务器。 ### 4. 发送和接收消息 - 发送消息:使用Message类创建一个新的消息对象,指定接收方JID,然后调用connection对象的sendPacket()方法发送。 - 接收消息...
2. **连接服务器**:使用XMPP库建立与Openfire服务器的连接。这包括设置服务器地址、端口、用户名和密码等参数,以及处理连接建立和断开的情况。 3. **注册和登录**:用户需要在Openfire服务器上注册账号,然后在...
4. **注册与登录**:用户在首次使用时需要注册,之后每次启动应用时登录。客户端需要处理注册用户的请求,以及在成功认证后发送登录请求到服务器。 5. **实体发现与会话建立**:XMPP允许客户端发现其他在线用户并...
总之,“基于XMPP的即时通信实现代码”是一个涵盖用户生命周期管理(注册、登录)和社交功能(添加、删除好友)以及核心通信功能的完整系统。通过深入理解和应用这些概念,开发者可以构建自己的IM应用,为用户提供...
本文档还定义了一些与互联网编号分配机构(IANA)相关的事项,包括端口号、XML命名空间等的注册和管理。 #### 16. 参考文献 最后,文档列出了所有参考的文献和技术规范,以便读者深入了解XMPP协议的技术背景和发展...
博文链接:https://magicgod.iteye.com/blog/201997
注册过程通常涉及创建一个新的XMPP用户账户,这需要与XMPP服务器交互,发送注册请求并处理响应。在iOS应用中,可以设计一个注册界面,收集用户输入的用户名、密码和其他必要信息,然后通过XMPPStream对象发送注册...
2. 用户登录与注册: 使用AbstractXMPPConnection的login方法进行登录,注册则需要通过AccountManager类创建新用户。 3. 发送单聊消息: 创建Message对象,设置目标JID和消息内容,然后通过...
在仿QQ项目中,用户注册和登录过程是通过XMPP框架实现的,这涉及到生成JID(Jabber ID)和处理认证请求。 4. **实时通信**:XMPP的核心是实时通信,包括一对一聊天、群聊、文件传输等。项目可能包含了如何发送、...
客户端通常会通过建立TCP连接到服务器,然后使用XMPP协议进行登录、发送和接收消息。在推送场景下,客户端会在后台保持与服务器的长连接,以便在接收到新消息时立即通知用户。 实现XMPP推送的具体步骤如下: 1. **...
它支持用户注册、登录、发送消息、创建群组聊天以及实时状态更新等功能。开发者通常会使用一个XMPP框架,如 CocoaPods 中的XMPPFramework,来简化iOS应用中的XMPP编程。 接下来,你需要配置ejabberd服务器。这包括...
2. **注册与登录**:使用`Client::registerUser()`注册新用户,通过`Client::authenticate()`进行登录。 3. **添加好友与聊天**:通过`Client::subscribe()`添加好友,`Client::sendPresence()`发送在线状态,`...