绪论 1
第1章 JavaKe起步:聊天室的实现 5
1.1 从零开始实现公共聊天室 5
1.1.1 网络基础知识 5
1.1.2 一步一步创建简单服务器 8
1.1.3 服务器读写消息实现 11
1.1.4 群聊服务器实现 20
1.1.5 群聊客户端实现 37
1.2 实现XMPP通信的IM系统 46
1.2.1 初识XMPP 46
1.2.2 交互流程描述 47
1.2.3 XMPP消息格式定义 49
1.2.4 服务器端代码的实现 50
1.2.5 客户端代码的实现 57
1.2.6 缺陷分析 65
1.3 程序结构性问题分析 65
1.3.1 整体结构设计的重要性 65
1.3.2 方法定义时细节的处理 66
1.3.3 高耦合的问题 67
1.4 JavaKe项目需求分析 68
1.4.1 JavaKe需求分析 68
1.4.2 JavaKe客户端的功能 68
1.4.3 JavaKe服务器端的功能 69
1.4.4 JavaKe系统网络结构 69
第2章 JavaKe:典型IM系统的实现 70
2.1 大话通信协议 70
2.1.1 理解通信协议的概念 70
2.1.2 定义文件传输协议并实现 71
2.1.3 实现文本/文件传送服务器 73
2.1.4 实现文本/文件传送客户端 76
2.2 JavaKe通信协议分析 78
2.2.1 通信消息流程 78
2.2.2 通信数据格式协议 81
2.2.3 具体消息体结构定义 82
2.3 关键技术点分析 85
2.3.1 打包解包的概念分析 85
2.3.2 重构打包解包代码 86
2.3.3 应用监听器模型分离界面和通信层 91
2.3.4 “事件监听”模型应用的实现 95
2.3.5 UI界面与数据模型分离 99
2.3.6 定制UI组件示例 107
2.4 JavaKe系统对象分析 113
2.4.1 对象分析思路 113
2.4.2 用户/分组类定义 116
2.4.3 系统消息对象分析 118
2.4.4 工具类分析 119
2.5 JavaKe服务器端的实现 129
2.5.1 服务器端分析 129
2.5.2 服务器创建模块的实现 130
2.5.3 服务器通信模块的实现 131
2.5.4 服务器管理模块的实现 135
2.5.5 再谈分析:编程与软件开发的区别 138
2.6 JavaKe客户端的实现 139
2.6.1 客户端界面分析 139
2.6.2 客户端流程分析 141
2.6.3 客户通信模块类分析 142
2.6.4 客户UI界面模块类分析 146
2.7 JavaKe待完成任务分析 157
2.7.1 功能性完善的问题提出 157
2.7.2 构架性完善的问题提出 158
第3章 JavaKe扩展:连接移动CMPP网关 159
3.1 应用软件与移动通信网络的关系 159
3.2 移动增值业务解析 161
3.2.1 移动增值业务类型说明 161
3.2.2 何谓SP服务商 162
3.2.3 中国移动MISC平台介绍 162
3.3 CMPP短信业务理解 164
3.3.1 短信的基本属性 164
3.3.2 移动网络中的短信流程 165
3.3.3 SP短信服务的基本概念 166
3.3.4 SP指令匹配理解 167
3.4 中国移动CMPP通信解析 167
3.4.1 运营商短信协议介绍 167
3.4.2 客户端与服务器模型 168
3.4.3 异步消息发送模式 168
3.4.4 长连接与短连接 169
3.4.5 CMPP消息类型 169
3.4.6 CMPP消息的结构 170
3.4.7 CMPP部分术语解释 171
3.5 CMPP短信网关的实现 172
3.5.1 CMPP CONNECT及其应答包结构分析 172
3.5.2 CMPP CONNECT和其应答包的定义 174
3.5.3 CMPP应答包打包、解包工具类编写 175
3.5.4 打包过程的说明 179
3.5.5 解包的过程说明 179
3.5.6 字符串数据的读写理解 180
3.5.7 ISMG服务器端实现 181
3.5.8 MD5摘要计算原理及应用 184
3.5.9 SP端网关实现 187
3.5.10 网关程序调试技巧 189
3.5.11 网关关键技术点分析 192
3.6 应用手机终端收发短信 195
3.6.1 AT命令简介及应用 195
3.6.2 使用smsLib发送短信 198
第4章 通信高级技术分析 203
4.1 通信的安全保证 203
4.1.1 网络为什么不安全 203
4.1.2 用Jpcap窃取数据包 206
4.1.3 对称加密与消息摘要 216
4.1.4 非对称加密机制 222
4.1.5 SSL安全通道通信示例 232
4.2 JavaKe远程控制模块实现 241
4.2.1 远程控制原理 241
4.2.2 远程控制关键技术解析 243
4.2.3 被控制端实现 245
4.2.4 控制端实现 250
4.3 基于UDP通信的设计 254
4.3.1 UDP通信示例 254
4.3.2 UDP可靠传输的控制 258
4.3.3 UDP组播消息 268
4.3.4 内网穿透实现分析 272
4.4 JavaNIO通信示例 282
4.4.1 NIO基本概念 282
4.4.2 NIO简单聊天室 291
4.4.3 NIO文件操作 297
4.5 Mina通信框架应用 299
4.5.1 关于Mina框架 299
4.5.2 Mina简单入门 299
4.5.3 Mina的体系结构总结 305
4.5.4 使用Mina直接传送对象 307
4.5.5 扩展学习 308
4.6 应用Memcached实现缓存系统 309
4.6.1 初识Memcached 309
4.6.2 缓存系统的网络构架 312
4.6.3 为JavaKe应用缓存系统 318
4.7 视频通信实现 321
4.7.1 JMF概述 321
4.7.2 JMF使用RTP协议 328
4.7.3 FMJ视频聊天室的实现 334
4.8 远程调用技术:RMI vs Hessian 354
4.8.1 分布式计算的基本理解 354
4.8.2 分布式体系结构的模型 356
4.8.3 RMI应用示例 357
4.8.4 定制RMI端口 364
4.8.5 简洁的Hessian 366
第5章 JTwitter系统实现分析 371
5.1 JTwitter是什么? 371
5.1.1 概念分析 371
5.1.2 JTwitter的核心功能需求 373
5.2 客户端程序功能分析 374
5.2.1 登录/注册功能 374
5.2.2 主界面功能 377
5.3 客户端和服务器端通信接口设计 380
5.3.1 通信接口设计 380
5.3.2 通信机制设计 385
5.4 数据库结构分析 386
5.5 Web服务端功能分析 387
5.6 扩展构架分析 388