多年前一个机会参与设计开发一个企业级的即时通讯软件项目,当时类似企业QQ,阿里旺旺的软件系统,如今整理资料时觉得可以将它拿出来与大家分享,不过是早期的一个版本,如今经过我的努力已经更新了多个版本,现在还是比较不错的,可以商用,想学习这方面的朋友可以免费下载源码包,但是不能用于商用,如今已经有C++\C#\Delphi等多个版本,想购买商用版可以联系我,ok!废话不多说先上内容。
一.系统功能清单概览
功能模块 |
功能模块具体描述 |
实时信息交互 |
支持联系人状态(在线、离开、离线、忙碌、电话、会议…) |
支持一对一会话(文字) |
|
支持邀请多人会话(文字) |
|
支持表情图标 |
|
支持字体与颜色 |
|
支持截图发送 |
|
支持点对点文件发送 |
|
支持点对点文件断点续传 |
|
支持一对一语音交流 |
|
支持一对一视频交流 |
|
查找联系人 |
|
显示在线企业内部人员与客户联系人 |
|
支持消息广播 |
|
支持留言消息提醒,对方不在线情况下可以留言,对方上线时得到留言提醒 |
|
企业组织结构管理 |
支持企业部门结构浏览,可查看部门结构以及找到具体的部门人员或客户联系人 |
支持企业部门组织结构信息创建与修改 |
|
支持部门下面人员信息(帐号)创建与修改 |
|
支持企业客户联系人信息(帐号)创建与修改 |
|
历史信息管理 |
通讯记录,查看历史聊天记录和文件发送接收记录 |
企业短信中心 |
|
手机短信群发(中国移动、中国联通手机) |
|
Web客户端 |
内嵌Web网页浏览 |
语言版本 |
支持简体中文操作界面,包括客户端和服务端 |
支持英文操作界面,包括客户端和服务端 |
|
|
二、具体功能:
系统设置 |
用户对客户端登录连接等信息进行设置,如图(2)、(3)所示 |
注销 |
表示用户退出重新登录系统 |
查看详细资料 |
表示对联系人的详细信息进行查看 |
我的状态 |
表示用户可以自定义在线状态,如忙碌、离开、就餐… |
开始对话 |
表示进入即时信息交流 |
发送文件或照片 |
表示发送文件和图片给对方,文件格式没有限制可以是任何文件,另外传输文件大小也没有限制 |
音频对话 |
表示用户一对一使用麦克风进行语音交流 |
网络摄像机 |
表示用户一对一使用麦克风和摄像头进行语音视频交流 |
音频视频调节向导 |
表示用户对即插即用的音频视频设备进行设置 |
打开消息历史记录 |
表示用户查看自己历史聊天记录和文件收发记录 |
三、截图
用户上线
1) 0x1001:Client连接Appsvr,发送上线请求,包格式如下:
字段名 |
长度(字节数) |
类型 |
备注 |
用户名UserName |
31 |
char |
|
密码Password |
16 |
char |
|
版本号 |
4 |
int |
|
好友列表最后刷新时间 |
4 |
Time_t |
|
如果版本不匹配,连接到文件服务器下载最新版本的安装程序,断开客户端连接;
0x5001:Appsvr收到请求后作版本比较,如果版本更新,则通知Client
字段名 |
长度 |
类型 |
备注 |
文件服务器IP |
16 |
char |
|
文件服务器端口 |
2 |
byte |
|
版本号 |
4 |
int |
|
如果AppSvr中的待处理登录命令太多,则直接拒绝客户端登录请求
0x5001 AppSvr->Client
字段名 |
长度(字节数) |
类型 |
备注 |
状态码:
0x5001 版本不匹配
0x5002 服务器忙
2) 0x5002: Appsvr向DBGateway请求验证;
字段名 |
长度 |
类型 |
备注 |
源消息ID |
4 |
int |
AppSvr发给MCG的消息ID |
用户名UserName |
31 |
char |
|
密码Password |
16 |
char |
|
好友列表最后刷新时间 |
4 |
Time_t |
|
3) 数据库网关返回验证结果
如果验证客户端失败,返回空包
0x7001:DBG->Appsvr
字段名称 |
长度 |
类型 |
备注 |
状态码:
0x7001 用户密码错
0x7002 用户不存在
如果验证客户端成功,返回用户个人信息和好友列表
0x7001 DBG->AppSvr
字段名称 |
长度 |
类型 |
备注 |
源消息ID |
4 |
int |
AppSvr发给MCG的消息ID |
用户ID |
4 |
int |
|
性别 |
1 |
Byte |
0:无,1:男,2:女 |
年龄 |
1 |
Byte |
|
加好友方式 |
1 |
byte |
0:直接加,1:验证,2:禁止加 |
图标ID |
2 |
byte |
|
昵称 |
51 |
Char |
|
手机 |
20 |
Char |
|
Email地址 |
51 |
Char |
|
公司 |
31 |
Char |
|
部门 |
21 |
char |
|
国家 |
31 |
char |
|
省份 |
31 |
char |
|
城市 |
31 |
char |
|
地址 |
51 |
char |
|
是否需要更新本地好友列表 |
1 |
byte |
0:不需要更新;1:必须更新 |
是否有加好友验证消息需反馈 |
1 |
byte |
0:没有;1:有 |
加过本方的人的个数 |
2 |
WORD |
|
好友个数 |
2 |
WORD |
|
加过本方为好友的人的列表 |
|||
用户号UserID |
4 |
Int |
|
好友列表 |
|||
好友UserID |
4 |
Int |
|
好友用户名 |
|
|
|
图标ID |
2 |
Int |
|
昵称DispName |
51 |
Char |
|
状态码:0x0000 验证成功
4) AppSvr向Client回复登录验证结果
如果验证客户端失败,AppSvr向客户端回复失败状态,并断开客户端连接
0x5001 AppSvr->Client
字段名称 |
长度 |
类型 |
备注 |
状态码: 0x7001 用户不存在
0x7002 用户密码错误
如果验证成功,返回用户个人信息和好友列表以及所负载的IMSvr,然后断开客户端连接
0x5001: Appsvr->Client:通知客户端验证成功,返回用户个人信息和IMSvr列表
字段名 |
长度 |
类型 |
备注 |
用户ID |
4 |
int |
|
性别 |
1 |
Byte |
0:无,1:男,2:女 |
年龄 |
1 |
Byte |
|
加好友方式 |
1 |
byte |
0:直接加,1:验证,2:禁止加 |
图标ID |
2 |
byte |
|
昵称 |
51 |
Char |
|
手机 |
20 |
Char |
|
Email地址 |
51 |
Char |
|
公司 |
31 |
Char |
|
部门 |
21 |
char |
|
国家 |
31 |
char |
|
省份 |
31 |
char |
|
城市 |
31 |
char |
|
地址 |
51 |
char |
|
IMSvr个数 |
1 |
byte |
|
IMSvr列表 |
|||
IMSvr IP |
16 |
Char |
|
IMSvr TCP端口 |
2 |
Short |
|
IMSvr UDP端口 |
2 |
Short |
|
状态码:0x0000 验证成功
0x5003:Appsvr->Client 刷新好友信息
字段名 |
长度 |
类型 |
备注 |
是否需要更新本地好友列表 |
1 |
byte |
0:不需要更新;1:必须更新 |
好友个数 |
|
|
|
好友列表 |
|||
好友UserID |
4 |
Int |
|
用户名 |
31 |
char |
|
昵称DispName |
51 |
Char |
|
图标ID |
2 |
Int |
|
状态 |
|
|
|
状态码:0x0000 成功
5) 0x1002:Client_IMSVR_TCP_online:Client->IMSvr:客户端登录IM服务器
字段名 |
长度 |
类型 |
备注 |
用户号UserID |
4 |
Int |
|
密码Password |
16 |
Char |
|
内网IP |
16 |
char |
|
内网UDP 端口 |
2 |
short |
|
6) 0xB001 IMSvr->AppSvr 请求验证客户端
字段名 |
长度 |
类型 |
备注 |
用户号UserID |
4 |
Int |
|
密码Password |
16 |
Char |
|
7) 0x5004 AppSvr->IMSvr 返回验证结果
字段名 |
长度 |
类型 |
备注 |
用户号UserID |
4 |
Int |
|
状态码: 0x0000 验证成功
0x5003 用户不存在
0x5004 用户密码错误
8) 0xB002 IMSvr->Client 返回验证结果
字段名 |
长度 |
类型 |
备注 |
状态码: 0x0000 验证成功
0x5003 用户不存在
0x5004 用户密码错误
IMSvr向客户端返回验证成功的结果后,在待处理队列中写入一个包,记录开始等候UDP连接的时间,作超时检测。Client收到验证成功的消息后,开始向IMSvr发UDP激活包;
UDP激活包的格式如下:
0x1000:
字段名 |
长度 |
类型 |
备注 |
用户号UserID |
4 |
Int |
|
如果IMSvr超时未收到客户端的UDP激活包,则通知Client登录失败,断开连接;如果成功收到激活包,则通客户端登录成功。同时IMSvr通知AppSvr,Client登录是否成功。
9) 0xB003 IMSvr->Client IM服务器通知客户端登录结果
字段名 |
长度 |
类型 |
备注 |
状态码: 0x0000 登录成功
0xB001 超时未收到UDP激活包
0xB002 服务器超时
0xB003 服务器忙
0xB004 服务器拒绝登录请求
0x5003 用户不存在
0x5004 用户密码错误
0xB004
IMSvr->AppSvr:Client上线是否成功
字段名 |
长度 |
类型 |
备注 |
用户号UserID |
4 |
Int |
|
外网IP |
16 |
char |
|
外网udp端口 |
2 |
byte |
|
内网IP |
16 |
char |
|
内网udp端口 |
2 |
byte |
|
状态码: 0x0000 登录成功
其它: