1.1 什么是网络 1
第1章 联网原理 1
1.2 网络如何通信 2
1.2.1 编址 2
1.2.2 使用包的数据传输 3
1.3 层间通信 3
1.3.1 第一层——物理层 4
1.3.2 第二层——数据链路层 5
1.3.3 第三层——网络层 5
1.3.4 第四层——传输层 5
1.3.5 第五层——会话层 5
1.3.6 第六层——表示层 5
1.3.7 第七层——应用层 5
1.4 分层的优势 5
1.5 Internet体系结构 6
1.6.3 POP3 12
1.6.2 FTP 12
1.6 Internet应用协议 12
1.6.1 Telnet 12
1.6.4 IMAP 13
1.6.5 SMTP 13
1.6.6 HTTP 13
1.6.7 Finger 13
1.6.8 NNTP 13
1.6.9 WHOIS 13
1.7 TCP/IP协议簇层 13
1.8 安全问题:防火墙与代理服务器 14
1.8.1 防火墙 15
1.8.2 代理服务器 16
1.8.3 开发者的防火墙 16
1.9 小结 16
2.2 Java程序设计语言 19
2.2.1 Java的历史和起源 19
第2章 Java概述 19
2.1 Java是什么 19
2.2.2 Java语言的特性 20
2.3 Java平台 23
2.3.1 Java虚拟机 24
2.3.2 Java运行时环境 24
2.4 Java应用程序接口 25
2.5 考虑Java联网问题 26
2.6.1 网络客户 27
2.6 Java网络编程应用 27
2.6.2 游戏 28
2.6.3 软件代理 28
2.6.4 Web应用 29
2.6.5 分布式系统 30
2.7 Java语言问题 30
2.8 系统属性 34
2.8.1 从命令行传递系统属性 34
2.9.1 集成开发环境 35
2.8.2 编程指定新的系统属性 35
2.9 开发工具 35
2.9.2 Java系统开发包 36
2.10 小结 37
第3章 Internet寻址 39
3.1 局域网地址 39
3.2 IP地址 39
3.2.1 IP地址的结构 40
3.2.3 特殊IP地址 41
3.2.2 获取IP地址 41
3.3 除IP地址以外:域名系统 42
3.3.1 域名是什么 42
3.3.2 域名系统的工作方式 42
3.3.3 域名解析 43
3.4 用Java进行Internet寻址 44
3.4.1 java.net.InetAddress类 44
3.4.2 用InetAddress类来确定本地主机地址 45
3.4.3 使用InetAddress类来找出其他地址 46
3.5 小结 47
3.4.4 Java中的其他地址类型 47
第4章 数据流 49
4.1 概述 49
4.1.1 确切地说,流是什么 49
4.1.2 怎样把流和联网技术联系起来 50
4.2 流的工作方式 50
4.2.1 从输入流中读取数据 51
4.2.2 向输出流写入数据 54
4.3 过滤器流 58
4.3.1 连接过滤器流和已有的流 58
4.3.2 有用的过滤器输入流 59
4.3.3 有用的过滤器输出流 62
4.4 读取器和写入器 65
4.4.1 Unicode字符是什么 65
4.4.2 读取器和写入器的重要性 65
4.4.3 从输入流到读取器 66
4.4.4 低级读取器类型 67
4.4.5 过滤器读取器类型 69
4.4.6 从输出流到写入器 71
4.4.7 低级写入器类型 72
4.4.8 过滤写入器类型 75
4.5 对象持久性和对象序列化 76
4.5.1 什么是对象持久性 76
4.5.2 什么是对象序列化 77
4.5.3 序列化的工作方式 77
4.5.4 把对象读写到流中 78
4.5.5 对象的安全序列化 83
4.5.6 对象序列化和版本控制 83
4.6 小结 84
第5章 用户数据报协议 87
5.1 概述 87
5.2 DatagramPacket类 89
5.2.1 创建DatagramPacket实例 89
5.3 DatagramSocket类 90
5.3.1 创建DatagramSocket实例 90
5.2.2 使用DatagramPacket对象 90
5.3.2 使用DatagramSocket对象 91
5.4 监听UDP包 92
5.5 发送UDP包 93
5.6 用户数据包协议范例 94
5.7 构建UDP客户/服务器 99
5.7.1 构建回显服务 99
5.7.2 构建回显客户 101
5.8 关于UDP的其他信息 103
5.7.3 运行回显客户和服务器 103
5.8.1 缺少可靠交付 104
5.8.2 缺乏可靠包定序 104
5.8.3 缺乏流控制 104
5.9 小结 105
第6章 传输控制协议 107
6.1 概述 107
6.1.1 TCP优于UDP之处 108
6.1.2 使用端口在应用程序间通信 109
6.2.1 客户/服务器范型 110
6.1.3 套接字操作 110
6.2 TCP和客户/服务器范型 110
6.2.2 网络客户 111
6.2.3 网络服务器 111
6.3 TCP套接字和Java 111
6.4 Socket类 112
6.4.1 创建Socket实例 113
6.4.2 使用Socket对象 113
6.4.3 从/向TCP套接字中读取/写入数据 115
6.4.4 套接字选项 116
6.5 创建TCP客户 119
6.6 ServerSocket类 120
6.6.1 创建ServerSocket实例 121
6.6.2 使用ServerSocket 122
6.6.3 接受并处理来自TCP客户的请求 123
6.7 创建TCP服务器 123
6.8.3 ConnectException类 125
6.8.2 BindException类 125
6.8.1 SocketException类 125
6.8 异常处理:套接字特定异常 125
6.8.4 NoRouteToHostException类 126
6.8.5 InterruptedIOException类 126
6.9 小结 126
第7章 多线程应用程序 127
7.1 概述 127
7.1.1 单线程程序设计 127
7.1.2 多进程程序设计 128
7.1.3 多线程程序设计 129
7.2 Java中的多线程 130
7.2.1 用Thread类创建多线程应用程序 130
7.2.2 使用Runnable接口创建多线程应用程序 132
7.2.3 控制线程 133
7.3 同步 137
7.3.1 方法级同步 137
7.3.2 代码块级同步 141
7.4.1 线程间的通信管道 142
7.4 线程间通信 142
7.4.2 通知等待中的线程发生了某事件 144
7.5 线程组 145
7.5.1 创建线程组 147
7.5.2 使用线程组 147
7.6 线程优先级 150
7.6.1 分配线程优先级 150
7.6.2 获得当前线程优先级 151
7.6.3 限制线程优先级 151
7.7 小结 151
第8章 实现应用协议 153
8.1 概述 153
8.2 应用协议规范 153
8.3 应用协议实现 154
8.3.1 SMTP客户实现 154
8.3.2 POP3客户实现 162
8.3.3 HTTP/1.0服务器实现 168
8.4 小结 177
第9章 超文本传输协议 179
9.1 概述 179
9.1.1 什么是HTTP 179
9.1.2 HTTP的工作方式 179
9.1.3 Web客户 180
9.1.4 Web服务器 183
9.2 HTTP和Java 186
9.2.1 URL类 186
9.2.2 分析URL对象 188
9.2.3 用URL类检索资源 190
9.2.4 URLConnection类 193
9.2.5 用URLConnection类检索资源 196
9.2.6 使用URLConnection类修改和检查首部域 199
9.2.7 HttpURLConnection类 202
9.2.8 使用HttpURLConnection类访问HTTP特有功能 206
9.3 公用网关接口 209
9.3.1 用GET方法发送数据 209
9.3.3 在Java中发送GET请求 210
9.3.2 用POST方法发送数据 210
9.3.4 在Java中发送POST请求 212
9.4 小结 215
第10章 Java servlet 217
10.1 概述 217
10.2 servlet的工作方式 218
10.3 使用servlet 218
10.3.1 GET和POST 220
10.3.2 PUT和DELETE 221
10.3.3 TRACE 221
10.3.4 OPTIONS 221
10.4 运行servlet 221
10.4.1 下载Java Servlet开发包 222
10.4.2 安装servlet引擎 222
10.5 编写简单的servlet 224
10.6 单线程模型 226
10.7 ServletRequest类和HttpServletRequest类 226
10.8 ServletResponse类和HttpResponse类 228
10.9 ServletConfig类 230
10.10 ServletContext类 231
10.11 servlet异常 232
10.12 cookie 232
10.13 servlet中的HTTP会话管理 235
10.14 小结 237
第11章 远程方法调用 239
11.1 概述 239
11.1.1 什么是远程方法调用 239
11.1.2 比较远程方法调用和远程过程调用 240
11.2 远程方法调用的工作方式 240
11.3 定义RMI服务接口 242
11.4 实现RMI服务接口 243
11.5 创建存根类和骨架类 244
11.6 创建RMI服务器 245
11.7 创建RMI客户 247
11.9 远程方法调用包和类 249
11.8 运行RMI系统 249
11.10 远程方法调用部署问题 264
11.10.1 动态类加载 264
11.10.2 Java虚拟机之间的差异 266
11.10.3 远程方法调用和applet 267
11.11 利用远程方法调用实现回调 268
11.11.1 面向对象的回调 269
11.11.2 RMI回调 270
11.12 远程对象激活 275
11.12.1 什么是远程对象激活 276
11.12.2 远程对象激活的工作方式 276
11.12.3 创建可激活的远程对象 278
11.12.4 注册可激活远程对象 278
11.13 小结 284
第12章 Java IDL和CORBA 285
12.1 概述 285
12.2 CORBA的体系结构 286
12.2.2 CORBA客户 287
12.2.1 CORBA服务 287
12.3 IDL 288
12.3.1 语言概述 288
12.3.2 IDL数据类型 288
12.3.3 IDL接口 289
12.3.4 IDL模块 289
12.3.5 IDL属性 289
12.3.6 IDL操作 290
12.3.7 IDL异常处理 290
12.4 从IDL到Java 291
12.4.1 一个示例模式 291
12.4.2 把IDL模式映射到Java 291
12.4.3 编写服务者代码 292
12.4.4 编写客户代码 295
12.4.5 把所有东西放到一起 297
12.5 小结 298
13.1 概述 301
第13章 JavaMail 301
13.2 安装JavaMail API 302
13.3 测试JavaMail安装 303
13.4 使用JavaMail API 304
13.4.1 Address类 304
13.4.2 Message类 305
13.4.3 Service类 307
13.4.4 Store类 308
13.4.5 Folder类 309
13.4.6 Transport类 313
13.4.7 Session类 314
13.4.8 用JavaMail发送信息 316
13.4.9 用JavaMail检索信息 319
13.5 JavaMail的高级消息收发功能 323
13.5.1 JavaMail事件处理模型 323
13.5.2 编写JavaMail事件处理器 325
13.5.3 把文件作为附件发送 328
13.6 小结 332