前言 1
第1章 P2P程序设计模型介绍 5
1.1 P2P简史 5
1.2从客户/服务器模型到P2P 6
1.3各种P2P模型 7
1.3.1纯P2P模型 7
1.3.2带有一个简单的发现服务器的P2P 8
1.3.3带有发现和查找服务器的P2P 9
1.3.4带有发现、查找和内容服务器的P2P 9
1.4现有的P2P应用 10
1.4.1 Napster 10
1.4.2 Gnutella 10
1.5各种P2P模型的运行 13
1.5.1发现其他端 13
1.5.2为所需内容查询端 14
1.5.3和其他端共享内容 15
1.6共享资源的搜索 16
1.6.1服务器端搜索 17
1.6.2客户端的搜索 17
1.6.3 P2P模型中的搜索技术 17
1.7本书P2P应用程序的简要描述 18
1.7.1每个组件的作用 19
1.7.2三个组件之间的联系 21
1.8完成前述的设计 22
1.9使用三个组件的目的 22
1.10小结 24
第2章 设计P2P应用程序 25
2.1 P2P应用程序的设计考虑 25
2.2约束 26
2.2.1代理IP解决方案 26
2.2.2数据传送中的问题 26
2.2.3安全 26
2.3这个P2P应用程序的结构 27
2.4实现模块间的合理通信 29
2.4.1使用ASP进行监听器到服务器的通信 29
2.4.2使用ASP实现浏览器到服务器的通信 30
2.4.3使用XML进行监听器到浏览器的通信 31
2.4.4 XML请求和响应设计规范 32
2.5设计服务器 33
2.5.1 SQL Server 2000 33
2.5.2完整的数据库设计 34
2.5.3 SQL Server 2000中XML的实现 36
2.5.4创建XML 37
2.5.5解析XML 37
2.5.6监听器的设计 38
2.5.7浏览器的设计 42
2.6客户端:一个全面视图 50
2.7小结 57
第3章 了解P2P服务器 59
3.1在SQL Server 2000中建表 60
3.1.1主键 61
3.1.2外键 61
3.1.3 SQL Server 2000中的select语句 61
3.2用流程图描述ASP文件 62
3.2.1 login.asp 62
3.2.2 logout.asp 71
3.2.3 userlist.asp 73
3.2.4 userlist.xml 76
3.2.5 search.asp 77
3.3小结 82
第4章 使用Java设计P2P应用程序 83
4.1监听器源代码:XMLParserServer.java 84
4.1.1 Login.java 88
4.1.2 Shareddilog.java 102
4.1.3 MultiServer.java 113
4.1.4 check_directory.java 127
4.2浏览器/监听器源代码:SParser.java 137
4.3 XMLWriter.java 141
4.4 client.java 145
4.5 search_window.java 160
4.6 file_gui.java 166
4.7 search_screen.java 188
4.8 add_on.java 193
4.9小结 207
第5章 使用C#设计P2P应用程序 209
5.1 ServerCommunication类 209
5.2 XMLCreater类 220
5.3 XMLParser类 232
5.4登录窗体 253
5.5共享文件/文件夹窗体 277
5.6客户端窗体 290
5.7类frmShare 313
5.8搜索窗口 351
5.8.1搜索窗口 351
5.9小结 359
第6章 P2P应用程序中的流操作 361
6.1应用程序中的流操作 361
6.1.1流操作过程 361
6.1.2 Windows媒体开发工具包(Windows Media Encoder SDK) 362
6.1.3 Visual C++6.0的Windows媒体开发工具包 364
6.2 P2P中流操作的用途 364
6.3设计中的考虑事项 364
6.4浏览器的变化 403
6.5监听器的变化 407
6.6运行程序 410
6.7小结 412
第7章 P2P应用程序的插件 413
7.1聊天客户程序 413
7.1.1消息的XML格式 414
7.1.2实现消息传递机制 417
7.2实现全球化打印 422
7.2.1 Print按钮的代码(浏览器) 423
7.2.2 Print按钮的代码(监听器) 426
7.3使用J2ME在掌上设备上实现P2P搜索 428
7.3.1用户界面 430
7.3.2工作方式 431
7.4小结 437
附录 A 光盘上的内容 439