第1章 TCP/IP基础 3
1.1 网络分类 3
1.2 TCP/IP技术模型 3
第一篇 Java网络编程基础 3
1.2.1 OSI中的层与TCP/IP的协议 4
1.2.2 TCP/IP协议的功能 4
1.2.3 IP协议与TCP协议 4
第2章 Java安全模型 9
2.1 Java安全特性概述 9
2.1.1 安全架构 9
2.1.2 密码系统架构 10
2.1.3 安全相关工具 11
2.2 Applet的安全模型 11
2.2.1 Applet的安全限制 11
2.2.2 扩充Applet的权限 13
2.3.1 应用程序的默认超级权限 17
2.3 应用程序的安全模型 17
2.3.2 建立自己的策略文件 19
2.4 代码和文档的安全传输 23
2.4.1 代码和文档的安全 23
2.4.2 工具和API 24
2.5 使用工具实现安全的文件传输 25
2.5.1 文件发送 25
2.5.2 文件接收 28
2.6 使用工具实现代码传输的安全 30
2.6.1 发送代码 30
2.6.2 接收代码 31
2.7 使用API实现数字签名 32
2.7.1 生成一个数字签名 32
2.7.2 解析数字签名 33
2.8 实现自己定义的权限控制 35
3.1 创建线程 43
第3章 多线程网络编程 43
3.2 线程的状态 44
3.2.1 线程的运行状态 44
3.2.2 休眠 44
3.2.3 wait、notify与notifyAll 46
3.3 在线程间安全地交流信息 48
3.3.1 Volatile关键字 49
3.3.2 Synchronized关键字 49
3.3.3 死锁问题 50
第4章 异常机制 53
4.1 什么是异常 53
4.2 使用try与catch关键字 53
4.3 finally关键字 54
4.4 异常栈 55
4.5 异常类 56
4.6 异常匹配 57
4.7 Throws关键字 58
4.8 写自己的异常类 59
4.9 异常处理的设计原则 61
第5章 可视化用户界面开发 63
5.1 图形界面的基本API 63
5.1.1 Java的组件 63
5.1.2 AWT的容器 64
5.1.3 Java的布局管理器 66
5.1.4 AWT中的事件 72
5.2 使用Swing组件 78
5.2.1 Swing组件概览 78
5.2.2 使用顶级容器 79
5.2.3 使用中间容器 81
5.2.4 使用底层组件 90
5.3 使用Forte工具 91
6.1 关于流 97
第二篇 Java的流 97
第6章 文件流 97
6.2 字符流与字节流 98
6.2.1 字符流 98
6.2.2 字节流 99
6.3 比较父类中的方法 99
6.4 选择合适的流 100
6.5 Copy程序实例 101
6.6 File类 103
6.6.1 分隔符与路径 103
6.6.2 目录与文件 105
第7章 使用管道流 107
7.1 理解管道流 107
7.2 管道操作文件实例 108
第8章 连接数据源 113
8.1 合并文件 113
8.2 使用枚举类 115
第9章 过滤流 119
9.1 DataInputStream与DataOutputStream 119
9.2 BufferedInputStream与BufferedOutputStream 122
9.3 CheckedInputStream和CheckedOutputStream 124
9.4 PushbackInputStream 125
9.5 打印流 127
第10章 对象的序列化 129
10.1 理解对象的序列化 129
10.2 编写实现了序列化的类 130
10.3 ObjectInputStream与ObjectOutputString类中的方法 132
10.4 操作多项相同信息 133
10.5 transient方法 134
第11章 网络中的流 137
11.1 如何使用Java获取网上资源 137
11.1.1 得到HTML的流 137
11.1.2 显示HTML文档 138
11.2 从网络上获取图像 139
11.3 读取网络中的表信息 140
第12章 压缩流 145
12.1 压缩工具包 145
12.1.1 ZipFile类与ZipEntry类 145
12.1.2 ZipInputStream类与ZipOutputStream类 145
12.2 一个解压缩的例子 146
12.3 一个压缩程序的例子 147
第13章 中文处理问题 151
13.1 汉字编码的常识 151
13.2 什么是Java的中文问题 151
13.3 中文的显示过程 152
13.4 编码转换函数 152
13.5 查看系统默认编码格式 153
14.1 C/S技术模型 159
第14章 基于C/S模型的网络开发 159
第三篇 Servlet技术的应用 159
14.2 基于TCP/IP的C/S技术模型 160
第15章 基于C/S模型的Java实现 165
15.1 hello world程序 165
15.2 用Java实现Socket模型 170
15.2.1 Socket的运行过程 170
15.2.2 Java对Socket的运行过程实现 170
15.3 echo程序 171
15.4 自定义协议的C/S程序 174
15.4.1 任务描述 174
15.4.2 构造协议类employProtocal 175
15.5 编写多线程的服务器程序 182
第16章 在客户端使用图形界面 185
16.1 图形客户端的echo程序 185
16.2 Applet图形客户端 188
17.1 聊天室程序的需求分析 193
第17章 聊天室实例程序 193
17.2 聊天室程序的代码分析 194
17.3 生成GUI客户端 206
18.1 HTTP的概念 210
17.4 留给读者的任务 218
第18章 HTTP应用开发 219
18.2 非持久性和持久性连接 220
18.2.1 非持久性连接 220
18.2.2 持久性连接 221
18.3 HTTP消息格式 221
18.4 构造一个HTTP服务器 223
18.5 构造一个HTTP的代理服务器 233
第19章 基于TCP的FTP开发 241
19.1 RFC 959简介 241
19.1.1 RFC 959目录解析 241
19.1.2 FTP的术语与参考模型 242
19.1.3 FTP标准模型 244
19.2 FTP中的数据 244
19.3 FTP命令 245
19.3.1 访问控制命令 245
19.3.2 传输参数命令 247
19.3.3 FTP服务命令 249
19.4 FTP回应 255
19.5 RFC 959的最小实现 256
19.6 回应的次序 256
19.7 状态图表集 259
19.8 典型场景 260
第20章 基于UDP协议的开发 261
20.1 UDP协议标准 261
20.2 与数据报相关的类 261
20.3 第一个UDP实例 264
20.4 多点传输 268
20.5 多点传输的例子 269
20.6 OICQ程序与UDP 271
第21章 基于JavaMail的邮件系统 273
21.1 邮件如何传输 273
21.2 邮件消息模型 274
21.3 SMTP与POP3协议 275
21.3.1 SMTP协议 275
21.3.2 POP3协议 276
21.4 JAMES服务器安装与分析 277
21.4.1 下载JAMES服务器代码 277
21.4.2 配置JAMES服务器 278
21.4.3 配置邮件客户端 280
21.4.4 SMTP服务分析 283
21.5 发送邮件程序实例 293
21.5.1 构造一个用户注册信息类 293
21.5.2 注册主程序 296
21.5.3 邮件发送程序 298
21.5.4 运行程序 300
21.5.5 邮件程序分析 301
21.6 接收邮件程序实例 303
21.6.1 接收邮件源程序 303
21.6.2 接收邮件步骤分析 305
21.7 邮件发送与接收的过程 306
21.7.1 发送一个带附件的邮件 306
21.7.2 邮件的存储 310
21.7.3 邮件的接收 311
21.8 使用JavaMail的搜索功能 318
21.8.1 搜索标准 319
21.8.2 搜索实现 319
第22章 使用新I/O开发网络应用程序 321
22.1 为什么使用新I/O 321
22.1.1 旧I/O系统的阻塞问题 321
22.1.2 解决阻塞的一般方式 323
22.2 新I/O带来了什么 324
22.3 Buffer的概念与应用 324
22.3.1 什么是Buffer 324
22.3.2 Buffer的结构 325
22.3.3 获得一个Buffer 326
22.3.4 Buffer的子类 326
22.3.5 使用Buffer 329
22.4 字符编码问题 330
22.5 关于Channel 331
22.5.1 Channel是什么 331
22.5.2 Channel类 332
22.5.3 FileChannel 332
22.5.4 Pipe 334
22.5.5 Selector 335
22.5.6 SelectableChannel 338
22.5.7 ServerSocketChannel与SocketChannel 339
22.6 新I/O的综合运用实例 343
22.6.1 编写主程序 343
22.6.2 编写HTTP回应线程 345
22.6.3 异常类应用 350
22.6.4 缓存类应用 351
22.6.5 统计类 352
第23章 RMI 355
23.1 RMI概述 355
23.2 RMI编程实例 355
23.2.1 远程接口的定义 356
23.2.2 远程接口的实现 356
23.2.3 构造一个客户端 358
23.2.4 运行实例 360
第24章 SSL与JSSE 363
24.1 关于SSL 363
24.1.1 为什么使用SSL 363
24.1.2 SSL的具体实现过程 364
24.2 加密的传输过程 365
24.3 JSSE的安装与调试 366
24.3.1 JSSE的安装 366
24.3.2 JSSE定制 368
24.3.3 调试工具 370
24.4 核心的类与接口 371
24.4.1 SSLSocket类和SSLServerSocket类 371
24.4.2 SSLSocketFactory类与SSLServerSocketFactory类 372
24.4.3 SSLSession接口 372
24.4.4 SSLSessionContext接口 372
24.4.5 X509Certificate Class 372
24.5 使用JSSE 372
24.5.1 创建自己的密钥库(Keystore) 372
24.5.2 编写echo程序实例 373
24.5.3 扩展已有的C/S程序 377
24.6 实现安全的Web服务 383
24.7 常见错误分析 386
24.8 构建安全的Mail 388
24.8.1 设置安全的系统属性 388
24.8.2 认证问题 388
24.9 JSSE的参考文档 391
附录A J2SE在REDHAT 7.0下的安装配置 393
A.1 获取安装文件 393
A.2 安装过程 393
A.3 J2SDK 1.4的目录结构 395
A.4 配置J2SDK 1.4环境 396
附录B 安装VMware软件 399
B.1 VMware安装前的准备工作 399
B.2 文件的下载与安装 399
B.3 建立第一个虚拟系统 399
B.4 使用此虚拟系统 404
附录C FTP程序源代码 407