`
- 浏览:
69520 次
- 性别:
- 来自:
盐城->长沙->深圳
-
网络通信基础第四式——实现自定义xmpp协议的KTM
从寒假正式开始通信项目的学习,距今已经快有两个月了。寒假期间,回到家,因为种种原因(多数是因为贪玩),大概一个多月没接触通信项目的开发,很是愧疚啊!寒假结束,一开学,院里就组织大家做课程设计,我为了尽早重回通信项目的开发,连夜赶工将课程设计的订票系统做完,第一个将源代码交给老师。随后,我立马开始了通信项目的后续开发。
对于将近一个多月没看的代码,虽然是自己辛辛苦苦敲出来的,但是一眼看去竟是那样的陌生,我发誓下次开发项目再也不拖沓了。我花了整整一天时间,回顾之前所写的代码,并结合胡哥的教诲,慢慢重新回到昔日项目开发的专注状态。寒假期间的集训,我基本完成了服务器的相关构建,包括创建循环等待的多线程服务器,实现服务器的启停,通过命令行输入telnet指令完成客户机与服务器的连接。
在最近一个星期,我通过自学文档以及与胡哥的交流,将该通信项目的基本功能逐一实现,并将此程序取名为KTM(king talk message),和一个著名车队同名,哈哈!
下面我就讲讲这一阶段的初步成果吧。首先,我完善了服务器端的界面,实现了服务器端对于客户机的简单管理和发送消息。其次,编写了简单的登录和聊天界面。最后,实现了自定义xmpp协议,使服务器和客户机的交互更加规范,流程更加清晰,相比之前的完全自定义协议要好理解的多。
一、消息类型:
1、登录请求消息
<msg>
<type>login</type>
<name>用户名</name>
<pwd>密码</pwd>
</msg>
<msg><type>login</type><name>user1</name><pwd>pwd1</pwd></msg>
<msg><type>login</type><name>user2</name><pwd>pwd2</pwd></msg>
<msg><type>login</type><name>user3</name><pwd>pwd3</pwd></msg>
2、登录应答消息
<msg>
<type>loginResp</type>
<result>登录返回结果</result>
<!--0:登录成功,1:用户名和密码不符,登录失败-->
</msg>
3、上线消息:
<msg>
<type>onLine</type>
<userName>上线者的用户名</userName>
<!--上线者用户名-->
</msg>
<msg><type>onLine</type><userName>上线者的用户名</userName></msg>
4、在线用户表消息:
<msg>
<type>userList</type>
<users>用户1,用户2,...</users>
<!--在线的所有用户名,以“,”隔开-->
</msg>
<msg><type>userList</type><users>用户1,用户2,...</users></msg>
5、聊天消息:
<msg>
<type>chat</type>
<sender>发送者用户名</sender>
<!--发送者用户名-->
<receiver>接受者用户名</receiver>
<!--接受者用户名,如果为空,表示对所有用户发送消息-->
<content>文本消息内容</content>
<!--发送的消息内容-->
</msg>
<msg><type>chat</type><sender>发送者用户名</sender><receiver>接受者用户名</receiver><content>文本消息内容</content></msg>
6、服务器踢人消息:
<msg>
<type>kickOff</type>
<userName>服务器踢掉用户的用户名</userName>
<!--服务器踢掉用户的用户名-->
</msg>
<msg><type>kickOff</type><userName>服务器踢掉用户的用户名</userName></msg>
7、下线消息:
<msg>
<type>logOff</type>
<userName>下线者的用户名</userName>
<!--下线者用户名-->
</msg>
<msg><type>logOff</type><userName>下线者的用户名</userName></msg>
二、交互流程:
1、客户机与服务器建立TCP/IP连接后,发送的第一条消息,只能是登录请求消息。
2、服务器向客户机发送登录应答消息,若某客户机登录成功后,服务器对在之前所有的在线用户发送有人上线的消息, 并向该客户机发送在线用户列表消息。若无客户机登录成功,则断开客户机与服务器建立的TCP/IP连接。
3、服务器接收到客户机发送到聊天消息后,将这条消息发送给指定的客户机用户,服务器也可以自己向客户机发送聊天信息。
4、服务器可以在客户机登陆之后的任意时刻将该客户机踢掉,当服务器将该客户机踢掉后,
服务器对所有剩下的客户机发送该客户机下线的消息。
5、某个客户机主动下线后,服务器对所有剩下的客户机发送该客户机下线的消息。
三、相关界面:
图1-1 服务器管理界面
图1-2 客户登录界面
图1-3 客户聊天界面
- 大小: 11.8 KB
- 大小: 17.3 KB
- 大小: 18.3 KB
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
安卓Android源码——基于XMPP协议的多帐号聊天.zip
XMPP协议中文参考指南
xmpp客户端协议实现源代码
不可多的XMPP协议中文帮助文档,大家可要下来保存哦!
一个很好的基于XMPP协议通信的源码例子,之前在网上下载了很多基于XMpp协议的例子都不好使,经自己改动后能正常通信,VS2010
XMPP_协议介绍,手机客户端需要实现即时通信功能,在通信协议上采用开放的Jabber(XMPP)协议,整个XMPP协议最为核心也是最为复杂的部分是Subscription的运行机制,抓取了一下相关的通信协议报文,供开发时候参考。
agsXMPP\XMPP协议--即时通讯工具实现原理
xmpp协议和xmpp扩展协议,chm格式
net平台 基于 XMPP协议的即时消息服务端简单实现
xmpp协议 XMPP协议工具openfire_3_10_3。
基于XMPP协议的手机多方多端即时通讯方案,包括详细的介绍和解决方案
本文介绍了一种基于XMPP 协议的AndroidPn 开源框架的实现模型,将其部署在MySQL 数据库和Tomcat 服务器下,实现并改进了实时推送消息、自定义消息结构和内容、推送服务开机启动、手机端服务唤醒、发送离线消息等实用...
XMPP协议的核心部分,中文名称可扩展消息出席协议
xmpp协议介绍PPT,详细介绍了XMPP核心协议方方面面
XMPP体系架构 XMPP server:其内核是一个XMPP路由器,完成基本组件间的数据包交换和路由。 功能: 1.会话管理器:负责客户端...4.服务器连接器:管理xmpp服务器之间的连接 5.传输器:建立xmpp服务器与非xmpp服务器通信
安卓Android源码——简洁XMPP.zip
gloox源代码,可以用来实现xmpp客户端。功能强大