第一章 P2P介绍 1
1.1 因特网的发展和P2P的演变 1
1.1.1 早期的因特网就是P2P(1969-1995) 1
1.1.2 因特网大爆炸时期的网络模型(1995-1999) 2
1.1.3 P2P应用重新出现在因特网上(2000-) 3
1.2 常见的P2P应用程序 4
1.2.1 聊天程序 4
1.2.2 协同工作和白板 5
1.2.3 游戏 5
1.2.4 文件共享 6
1.3 P2P面临的问题 7
1.3.1 对称带宽问题 7
1.3.2 Web标准操作过程的影响 7
1.3.3 名字空间问题 8
1.3.4 知识产权问题 8
1.3.5 用户问题 9
1.3.6 创建P2P网络 10
1.4 P2P相关技术 11
1.4.1 JINI 11
1.4.2 软件代理(Agent) 12
1.4.3 其他P2P平台 13
1.4.4 Web Service 15
1.5 本章小结 16
第二章 JXTA概述 18
2.1 P2P网络 18
2.2 JXTA是什么 20
2.3 JXTA的概念 22
2.3.1 Peer(对等机) 22
2.3.2 Peer Group(对等组) 22
2.3.3 Endpoint(端点) 22
2.3.4 Pipe(管道) 23
2.3.5 Advertisement(广告) 24
2.3.6 Message(消息) 24
2.3.7 Rendezvous Peer(集合点) 25
2.3.8 Router Peer(路由Peer) 26
2.3.9 Gateway Peer(网关Peer) 27
2.4 用于通信的Peer 27
2.4.1 防火墙 28
2.4.2 NAT(网络地址转换) 28
2.4.3 代理服务器 29
2.4.4 DHCP(动态IP分配) 29
2.4.5 网络的不稳定 29
2.4.6 网关问题 29
2.5 Peer和对等组 30
2.5.1 Peer和用户的关系 30
2.5.2 对等组的必要性 30
2.5.3 JXTA应用程序与对等组 32
2.5.4 对等组的成员资格 32
2.5.5 对等组的服务 33
2.6 广告(Advertisement) 34
2.6.1 广告的详细类型 35
2.6.2 模块(Module)广告 37
2.6.3 管道广告 43
2.6.4 端点路由消息 44
2.6.5 消息(Message) 44
2.7 JXTA的协议 46
2.7.1 核心协议 46
2.7.2 管道绑定协议(PBP) 47
2.7.3 Peer解析协议(PRP) 48
2.7.4 集合点协议(RVP) 49
2.8 JXTA的标志 51
2.8.1 Codat ID 51
2.8.2 Peer ID 51
2.8.3 Goup ID 51
2.8.4 Service/Module ID 52
2.8.5 Pipe ID 52
2.9 本章小结 52
3.1.1 下载并安装JXTA 53
第三章 JXTA标准应用 53
3.1 JXTA社区 53
3.1.2 JXTA的配置工具 55
3.2 Hello JXTA的简单编程 58
3.2.1 系统要求 58
3.2.2 程序源代码 58
3.2.3 编译和运行 59
3.2.4 程序分析 61
3.3 即时通信和文件共享(myJXTA) 62
3.3.1 项目介绍 62
3.3.2 安装与配置 62
3.3.3 功能介绍 64
3.4 网络游戏(Chess) 67
3.4.1 项目介绍 67
3.4.2 安装与配置 67
3.4.3 功能介绍 69
3.5.2 安装与配置 72
3.5 发现对方JXTA View 72
3.5.1 项目介绍 72
3.5.3 功能介绍 73
3.6 计算机辅助设计(JXTA-CAD) 74
3.6.1 项目介绍 74
3.6.2 安装与配置 74
3.6.3 功能介绍 75
3.7 本章小结 77
第四章 JXTA Shell 78
4.1 JXTA Shell的用途和价值 78
4.2 JXTA Shell的命令介绍 78
4.2.1 数据管理命令 79
4.2.2 系统管理命令 82
4.2.3 文件存取命令 84
4.2.4 Advertisement的管理命令 85
4.3.5 Peer Group的管理命令 87
4.2.6 Peer的管理命令 88
4.2.7 Pipe的管理命令 89
4.2.8 message的操作命令 90
4.2.9 Pipe的通信命令 90
4.2.10 配置管理与信息查看 91
4.2.11 talk命令 92
4.3 JXTA Pipe的重要角色 95
4.3.1 两个独立的JXTA Shell 95
4.3.3 发布Advertisement用于查询使用 96
4.3.2 创建输入管道 96
4.3.4 从输入管道接收Pipe Message 97
4.3.5 绑定到管道的输出端 97
4.3.6 通过输出管道发送消息 98
4.4 理解Rendezvous和Routers 98
4.4.1 用shell命令验证配置 100
4.4.2 Discovery的范围 102
4.4.3 Peer间使用Pipe进行虚拟连接 103
4.5.1 Shell扩展的基本机制 106
4.5 扩展JXTA Shell的功能 106
4.5.2 练习编写一个Shell扩展命令 107
4.5.3 创建一个复杂的Shell功能扩展 110
4.6 本章小结 116
第五章 JXTA深入编程 118
5.1 基于Pipe的编程 118
5.1.1 Pipe的类型 118
5.1.2 JXTA Pipe API简介 119
5.1.3 Pipe通信的过程 119
5.2 简单实用的程序开发包P2PSocket 121
5.2.1 P2PSocket开发包的简介 121
5.2.2 P2PSocket的API 122
5.2.3 P2PSocket.java源代码 125
5.2.4 OutputListener.java源代码 129
5.3 即时消息XChat 129
5.3.1 XChat的通信过程 129
5.3.2 XChat用到的类 130
5.3.3 XChat代码分析 131
5.3.4 XChat.java的源代码 131
5.4 文件传送 133
5.4.1 XFile的通信过程 133
5.4.2 XFile用到的类 133
5.4.3 XFile代码分析 135
5.4.4 XFile.java的源代码 137
5.5 P2P发布个人主页 140
5.5.1 XClient的通信过程 141
5.5.2 XWebServer和XWebClient用到的类 142
5.5.3 XWebServer代码分析 142
5.5.4 XWebClient代码分析 143
5.5.5 XWebServer.java的源代码 145
5.5.6 XwebClient.java的源代码 146
5.6.2 XChatp用到的类 149
5.6.1 XChatp的通信过程 149
5.6 数据同步 149
5.6.3 XChatp代码分析 150
5.6.4 XChatp.java的源代码 151
5.7 本章小结 153
第六章 JXTA Content Manage Service(CMS) 154
6.1 CMS概述 154
6.1.1 CMS的产生 154
6.1.2 什么是CMS 154
6.2 CMS核心内容 154
6.2.1 CMS体系结构 154
6.2.2 CMS协议细节 156
6.2.3 数字权限管理 158
6.3 CMS编程 158
6.3.1 CMS编程基础 158
6.3.2 CMS的初始化 159
6.3.3 文件的简单共享 160
6.3.4 文件的简单搜索 161
6.3.5 获取共享内容 163
6.3.6 基于Metadata的共享 166
6.3.7 基于Metadata的搜索 169
6.4 CMS的发展目标 171
6.4.1 分布式搜索 171
6.4.2 支持动态内容 171
6.4.4 与JXTA Search结合 172
6.5 本章小结 172
6.4.3 内容广告的单独共享 172
第七章 JXTA核心协议(一) 173
7.1 对等机发现协议(PDP) 173
7.1.1 PDP的消息格式 173
7.1.2 Discovery Query Message 174
7.1.3 Discovery Response Message 175
7.1.4 Discovery Service 177
7.1.5 DiscoveryListener接口 178
7.1.7 发现远程的Advertisements 179
7.1.6 DiscoveryEvent类 179
7.1.8 发现缓存中的Advertisement 180
7.1.9 清除缓存中的Advertisement 180
7.1.10 使用Advertisement 180
7.1.11 实例化一个Advertisement 181
7.1.12 发布Advertisement 182
7.1.13 小结 182
7.2 管道绑定协议(PBP) 183
7.2.1 Pipe概念 183
7.2.2 Pipe Advertisement 184
7.2.3 PBP消息格式 184
7.2.4 Pipe Binding Query Message 185
7.2.5 Pipe Binding Answer Message 186
7.2.6 Pipe Service 187
7.2.7 使用Pipe Service来发送和接收Message 188
7.2.9 Propagation Pipe 190
7.2.10 Bidirectional Pipe 190
7.2.8 Secure Pipe 190
7.2.11 小结 192
7.3 端点路由协议(ERP) 192
7.3.1 Endpoint简介 193
7.3.2 Endpoint Service 193
7.3.3 Endpoint Transport Implementation 195
7.3.4 Endpoint地址 196
7.3.5 Message的格式化过程 198
7.3.6 接收到达的Message 198
7.3.7 用Endpoint Service广播Message 199
7.3.8 用EndpointMessenger直接发送Message 199
7.3.9 Endpoint Filter Listener 199
7.3.10 Endpoint Routing Protocol(ERP)介绍 200
7.3.11 Route Query Message 201
7.3.12 Route Response Message 202
7.3.13 Endpoint Router Message 203
7.3.14 Endpoint Router Transport Protocol 204
7.3.15 小结 205
第八章 JXTA核心协议(二) 206
8.1 对等机解析协议(PRP) 206
8.1.1 PRP消息格式 206
8.1.2 解析请求消息 207
8.1.3 解析响应消息 208
8.1.4 Resolver Service 208
8.1.5 小结 209
8.2 集合点协议(RVP) 210
8.2.1 RVP消息格式 210
8.2.2 租约请求消息 211
8.2.3 租约授权消息 212
8.2.4 租约取消消息 212
8.2.5 控制消息传播 213
8.2.6 集合点服务 214
8.2.7 传播消息 214
8.2.9 RendezvousListener和RendezvousEvent类 215
8.2.8 与集合点建立连接和断开与集合点的连接 215
8.2.10 Rendezvous服务使用的支持类 216
8.2.11 维护Rendezvous Connections 217
8.2.12 小结 217
8.3 对等机信息协议(PIP) 218
8.3.1 PIP消息格式 218
8.3.2 Peer Info Query Message 219
8.3.3 Peer Info Response Message 219
8.3.4 Peer Info Service 221
8.3.5 PeerInfoListener接口 223
8.3.6 小结 223
8.4 模块Class与PeerGroup解析 223
8.4.1 模块、服务、应用 224
8.4.2 模块类广告 224
8.4.3 模块规范广告 225
8.4.4 模块实现广告 226
8.4.5 创建World Peer Group 228
8.4.6 创建Net Peer Group 230
8.4.8 加入Peer Group 231
8.4.7 创建Peer Group 231
8.4.9 离开Peer Group 232
8.4.10 销毁Peer Group 232
8.4.11 创建服务 232
8.4.12 小结 236
9.1.2 各种平台的实现 237
9.1.4 Service 237
9.1.3 各种应用 237
9.1.1 各种语言的实现 237
9.1 JXTA的发展 237
第九章 JXTA发展方向 237
9.2 参与JXTA的发展 238
9.2.1 参加各种项目 238
9.2.2 JXTA邮件列表 238
9.2.3 提出一个新项目 239
JXTA术语表 240