第一部分 绪论 3
第一章 简介 3
1.1 客户/服务器发展的市场驱动力 3
1.2 客户/服务器计算时代 5
1.3 客户/服务器的定义 6
1.4 真正的客户服务器前景 7
1.5 FAT服务器还是FAT客户 10
第二章 客户、服务器和操作系统 12
2.1 服务器程序的结构 12
2.2 服务器对操作系统的需求 12
2.3 一个客户程序的解剖 16
2.4 客户对OS的要求 19
2.5 在一个OS平台上的选择 20
第三章 OS/2 2.1提供的客户/服务器 22
3.1 作为客户平台的OS/2 2.1 22
3.2 作为服务器平台的OS/2 2.1 24
3.3 作为客户/服务器平台的OS/2 2.1 26
3.4 OS/2的将来 27
第四章 OS/2客户/服务器平台 31
4.1 OS/2的短暂历史 31
4.2 扩展服务器平台 36
4.3 如何把这些功能联系起来 38
4.4 一个完整的IBM平台的选择余地 38
4.5 生成自己的OS/2扩展 38
4.6 OS/2和“NEW SAA” 40
4.7 Windows和OS/2:一个家族事务 40
4.8 MS-DOS:永存的OS 42
4.9 作为DOS计算机超服务器的OS/2 43
第五章 OS/2服务器:定向极限 44
5.1 服务器规模 44
5.2 RISC对INTEL 45
5.3 超服务器 46
5.4 多服务器:无限的服务器能力 47
第六章 服务器平台:OS/2的竞争 48
6.1 最好的客户 48
6.2 服务器战争 49
6.3 Novell的NetWare 4.0 50
6.4 UNIX 51
6.5 MICROSOFT WINDOWS NT 55
6.6 TALIGENT 59
6.7 OS/2挑战 60
第七章 OS/2 2.1:一次愉快的旅行 61
7.1 OS/2内核服务 61
7.2 OS/2 2.1表示管理器(PM) 68
7.3 OS/2 2.1的开发工具 77
7.4 OS/2 2.1硬件支持 80
第八章 NTS/2:通信基底 81
8.1 NDIS:逻辑网络板 82
8.3 由CID安装 83
8.3 NetBIOS和802.2栈 85
第九章 通信管理器/2:SNA连接 87
9.1 通信管理器:综述 87
9.2 分层视图 88
9.3 编程界面(API) 94
9.4 网络管理 99
第十章 OS/2的TCP/IP:Unix连接 102
10.1 用于OS/2的TCP/IP 102
第十一章 LAN服务器和NetWare:网络操作系统 112
11.1 IBM LAN服务器3.0版本 112
11.2 OS/2 2.1的网络请求者 122
第十二章 数据库服务器:DB2/2和DDCS/2 130
12.1 DB2/2 130
12.2 DDCS/2:OS/2的DRDA产品 135
第十三章 客户/服务器计算的体系结构 139
13.1 体系结构的能力 139
13.2 客户/服务器体系结构模式 139
13.3 超客户/服务器:协作软件 143
13.4 新SAA环境下的OS/2 147
13.5 开放系统世界里的OS/2 156
第二部分 多任务入门 166
第十四章 进程、线程与信号 166
14.1 关于进程和线程 166
14.2 怎样用进程编多任务程序 168
14.3 如何用线程编制多任务程序 169
14.4 关于信号 171
第十五章 Daemons和Killers 178
15.1 预备要求 178
15.2 我们的第一个OS/2程序 185
15.3 KILLER:我们的第二个OS/2程序 198
15.4 NMAKE:一个简洁的指导 201
15.5 DAEMON.MAK 203
15.6 DAEMON.MAK:预演一个MAKE文件 203
15.7 将WorkFrame/2投入运行 206
15.8 运行daemon和killer 209
15.9 C/C++Tools PM调试程序 209
第十六章 怎样阅读一个MULTI屏幕 212
16.1 准备多线程竞争 212
16.2 具有MULTI进程的竞争 217
16.3 仔细研究MULTI.C程序 218
16.4 COUNT.C进程竞争 258
第十七章 命名管道 262
17.1 教程1:包含两个进程的简单的事务处理 262
17.2 教程2:使用单个管道实例的单服务器/多客户 264
17.3 教程3:使用多个管道实例的多线程服务 265
17.4 教程4:通过命名管道发送大量数据 266
第十八章 一个通用的客户/服务器文件传输服务 267
18.1 分层处理和客户/服务器软件设置 267
18.2 一个协议无关的通用接口 268
18.3 一个动态链接库的例子 268
18.4 通用文件传输协议 270
18.5 文件FXREQ.C 272
18.6 文件FXSVR.C 282
第十九章 FX使用命名管道 289
19.1 如何使用命名管道实现FXNPIPE.DLL 290
第三部分 客户/服务器的通信协议第二十章 NetBIOS 299
20.1 同层对同层协议 299
20.2 NETBIOS:同层对同层LAN协议 302
20.3 NetBIOS方案 309
第二十一章 使用NetBIOS的FX 313
21.1 NetBIOS编程 313
21.2 FXNETB.C:NETBIOS FX DLL 317
第二十二章 TCP/IP Sockets教程 331
22.1 SOCKETS:一个对等LAN协议 331
22.2 套接字情况 342
第二十三章 FX使用TCP/IP套接字 347
23.1 编程TCP/IP套接字 347
23.2 FXTCPIP.C:TCP/IP SOCKETS FX DLL 348
第二十四章 CPI-C和APPC 361
24.1 CPI-C和APPC的地位 361
24.2 你会用SNA表达吗 362
24.3 APPC API 367
24.4 CP-C API 378
24.5 是CPI-C还是APPC 381
24.6 CPI-C方案 385
第二十五章 带CPI-C的FX 390
25.1 CPI-C编程 391
25.2 FXAPPC.C:CPI-C FX DLL 392
第二十六章 FX使用LAN服务器、网络软件和远程命名管道 409
26.1 关于网络操作系统 410
26.2 FX使用在NETWARE和LAN SERVER上的命名管道 412
26.3 FX使用LAN REQUESTER-SERVER 413
第二十七章 FX LAN大竞赛 420
27.1 BLOBS概述 420
27.2 基准1:比较局域和远程命名管道 423
27.3 基准2:比较LAN协议 424
27.4 使该基准的一个操作生效 425
27.5 结论 430
第四部分 DB2/2:数据库管理器 433
第二十八章 DB2/2数据库管理器API教程 433
28.1 数据库管理器API服务的分类 433
28.2 SQLAPI 435
第二十九章 辅导教程:DB2/2数据库管理服务和DDCS/2 465
29.1 数据库管理API 465
29.2 数据库管理API:环境服务 466
29.3 数据库管理ApI:通用实用程序 483
29.4 数据库管理API:配置服务程序 489
29.5 数据库管理API:应用程序服务 497
29.6 数据库管理API:通用服务程序 498
29.7 DRDA:机会和CAVEATS 499
第三十章 RSQL:整体DB2/2数据库管理器的应用 504
30.1 本章目的 504
30.2 RSQL程序的生成 505
30.3 程序运行 505
30.4 查看结果文件 506
30.5 使用程序拓展SQL的功能 506
30.6 用程序拓展数据库管理命令 534
第三十一章 RSQL:SQL动态编程 544
31.1 RSQL.MAK生成文件 544
第三十二章 RSQL:数据库管理API编程 577
32.1 怎样阅读本章中的代码 577
32.2 数据库管理命令发送程序:DBA-EXEC() 578
32.3 RSQL.SQC:环境服务命令处理器 579
32.4 RSQL.SQC:通用命令处理器 594
32.5 RSQL.SQC:结构服务命令处理器 603
32.6 RSQL.SQC:应用服务命令处理器 615
32.7 RSQL.SQC:通用服务命令处理器 617
第五部分 为什么事务服务器最适于联机事务处理(OLTP)第三十三章 DB2/2数据库管理的事务基准工具箱 623
33.1 TP1基准与马拉松式系列 623
33.4 从这场马拉松比赛中会学到什么 624
33.3 OLTP基准的考虑 624
33.4 TP1的历史 625
33.5 什么是TP1 626
33.6 数据管理的TP1基准工具箱 627
33.7 建立TP1数据库 630
33.8 TP1的MAKE文件 632
33.9 TP1LOAD.SQC:装载TP1数据库表的程序 634
33.10 装入TP1数据库 638
33.11 我们将走向哪里 639
第三十四章 静态SQL数据库服务器TP1 641
34.1 TP1的静态SQL版本 641
34.2 局部和远程TP1配置 641
34.3 浏览SQLTP1.SQC代码 642
34.4 使用SQLTP1.SQC运行四个TP1基准测试 654
34.5 这些基准告诉我们什么 659
34.6 你可以回答问题 660
第三十五章 应用程序远程接口事务服务器TP1 661
35.1 你将学习的东西 661
35.2 TP1的应用程序远程接口 661
35.3 TP1的配置 662
35.4 浏览SQLTP1R1.C请求 662
35.5 介绍SQLTP1DL.SQC服务器 668
35.6 使用应用程序远程进行两个TP1基准测试 672
第三十六章 命名管道事务处理服务器TP1 677
36.1 你将学到什么 678
36.2 TP1命名管道方案(版本) 678
36.3 TP1配置 679
36.4 浏览SQLTP1RQ.C客户程序 679
36.5 浏览SQLTP1SV.SQC服务器 684
36.6 浏览LAUNCHER.C程序 692
36.7 使用命名管道运行两个TP1基准测试 694
第三十七章 动态SQL数据库服务器TP1 699
37.1 从这章将学到的东西 699
37.2 TP1的动态SQL版本 699
37.3 局部和远程TP1配置 699
37.4 浏览SQLTP1DY.SQC程序 700
37.5 使用动态SQL运行两个TP1基准测试 706
第三十八章 相对于OLTP事务服务器是最好的 711
第六部分 展示客户的服务器 717
第三十九 章图形用户界面的CUA标准 717
39.1 人机对话的CUA原则 717
39.2 CUA'91:用户对象 718
第四十章 GUI和OOUT工具的分类 726
40.1 在一个工具中所要查寻的 726
40.2 GUI工具 727
40.3 GUI/OOUI工具的分类 728
40.4 我将使用哪种工具 733
第四十一章 表示管理器 735
41.1 什么使得PM如此与众不同 735
41.2 资源及工具 741
41.3 利用IPF建立联机帮助 742
41.4 PM程序的分析 743
41.5 "HELLO WORLD FROM PM" 744
第四十二章 SOM,OOP及WPS类 748
42.1 SOM和面向对象编程 748
42.2 工作间外壳类 755
第四十三章 SOM/WPS的Hello World 758
43.1 开发SOM/WPS对象程序 758
43.2 HELLO WORLD FROM SOM/WPS 759
第七部分 重要的结束——Club Med客户服务器应用程序第四十四章 客户或服务器哪一个第一 781
44.1 OLTP和决策支持客户服务器的比较 781
44.2 客户服务器开发过程 781
44.3 预演两种供给 786
第四十五章 设计Club Med应用程序 787
45.1 用户所看到的Club Med OOUI 788
45.2 Club Med处理 794
第四十六章 Club Med客户 801
46.1 新Club Med SOM/WPS类 801
46.1 预演俱乐部类 803
第四十七章 Club Med服务器 844
47.1 Club Med事务服务器是什么 844
47.2 俱乐部事务服务器部件 844
47.3 CLUBSUR.SQC:事务服务器 847
47.4 祝贺及告别 855