前言
第1章 TCP/IP基础1
1.1 什么是TCP/IP1
1.2 TCP/IP的分层结构1
1.3 应用层5
1.3.1 DNS6
1.3.2 端口6
1.4 传输层7
1.4.1 TCP7
1.4.2 UDP7
1.5 网络层8
1.5.1 IP8
1.5.2 ARP14
1.5.3 RARP16
1.5.4 ICMP17
1.6 数据链路层26
1.6.1 数据链路层的基本概念26
1.6.2 数据链路层的主要功能26
第2章 在Windows下搭建Java开发环境28
2.1 下载JDK28
2.2 安装JDK29
2.3 配置JDK环境变量29
2.4 在命令行下编译Java程序30
2.5 在Eclipse中开发Java程序31
2.6 下载Eclipse31
2.7 启动Eclipse32
2.8 第一个Eclipse下的Java工程33
2.9 在工作区打开工程36
2.10 搭建Java Web开发环境36
2.10.1 下载Tomcat36
2.10.2 安装Tomcat36
2.10.3 在Eclipse中配置Tomcat38
2.10.4 第一个Eclipse下的JSP工程39
2.10.5 第一个JavaBean工程43
2.11 使用JNI47
2.12 搭建Java图形界面开发环境51
第3章 在Linux下搭建Java开发环境57
3.1 部署虚拟机Linux环境57
3.1.1 在VMware下安装Linux57
3.1.2 关闭防火墙60
3.1.3 制作快照61
3.1.4 以桥接模式连接Linux虚拟机61
3.1.5 通过终端工具连接Linux虚拟机64
3.1.6 与虚拟机互传文件66
3.2 命令行编译运行Java程序66
3.3 图形化界面开发Java程序67
3.3.1 第一个IDEA开发的Java应用程序68
3.3.2 使用第三方JAR库71
3.3.3 使用Linux中的SO库75
第4章 本机网络信息编程79
4.1 IP地址类InetAddress79
4.1.1 获取远程Web主机的IP地址81
4.1.2 获取本地环回地址82
4.1.3 单网卡下的本机地址83
4.2 网络接口类NetworkInterface85
4.2.1 得到所有网络接口87
4.2.2 得到本机所有网卡的IP地址89
第5章 Java多线程编程94
5.1 使用多线程的好处94
5.2 多线程编程的基本概念95
5.2.1 操作系统和多线程95
5.2.2 线程的基本概念96
5.2.3 操作系统中线程的状态97
5.2.4 线程函数97
5.2.5 线程标识98
5.3 Java中的多线程概述98
5.3.1 线程的创建98
5.3.2 线程的状态100
5.3.3 线程同步100
5.3.4 线程阻塞101
5.3.5 守护线程102
5.3.6 线程组102
5.4 Thread类103
5.4.1 构造方法104
5.4.2 成员方法104
5.4.3 创建线程107
5.4.4 线程的属性111
5.4.5 调度策略113
5.4.6 Java中线程的状态116
5.4.7 线程休眠118
5.4.8 线程让步119
5.4.9 线程结束122
5.4.10 等待线程结束126
第6章 TCP套接字编程128
6.1 网络程序的架构128
6.2 套接字的基本概念129
6.3 套接字地址131
6.3.1 构造方法131
6.3.2 getAddress方法132
6.3.3 getPort方法132
6.3.4 getHostName方法132
6.3.5 createUnresolved方法132
6.4 套接字的类型133
6.5 TCP套接字编程的基本步骤135
6.6 服务器的ServerSocket类135
6.6.1 构造方法136
6.6.2 accept方法137
6.6.3 close方法137
6.6.4 ServerSocket类的其他方法137
6.7 客户机的Socket类139
6.7.1 构造方法139
6.7.2 得到输入流getInputStream139
6.7.3 得到输出流getOutputStream141
6.7.4 禁用输出流shutdownOutput141
6.7.5 连接服务器的connect函数141
6.7.6 获取和设置读取数据的超时时间142
6.7.7 Socket类的其他方法142
6.8 实战TCP通信144
6.9 深入理解TCP编程149
6.9.1 数据发送和接收涉及的缓冲区149
6.9.2 TCP数据传输的特点150
6.9.3 数据发送的6种情形150
6.9.4 数据接收时碰到的情形151
6.9.5 简单情况的数据接收152
6.9.6 定长数据的接收156
6.9.7 ObjectInputStream和ObjectOutputStream159
6.9.8 发送和接收类对象167
6.9.9 变长数据的接收169
6.10 带图形界面的登录程序170
6.11 处理多种接收意外情况173
第7章 FTP网络编程180
7.1 FTP概述180
7.2 FTP的工作原理181
7.3 FTP的传输方式182
7.3.1 FTP的工作方式183
7.3.2 FTP命令184
7.3.3 FTP应答码186
7.4 开发FTP客户端程序188
7.4.1 客户端需求分析188
7.4.2 概要设计188
7.4.3 详细设计188
7.4.4 开发FTP服务端程序193
第8章 UDP编程和即时通信系统的设计213
8.1 UDP概述213
8.2 TCP和UDP的比较214
8.3 UDP在Java中的实现215
8.4 UDP通信的流程219
8.5 第一个UDP程序219
8.6 即时通信概述221
8.7 系统平台的选择222
8.7.1 应用系统平台模式的选择222
8.7.2 C/S模式介绍222
8.7.3 数据库系统的选择223
8.8 系统需求分析223
8.8.1 即时消息的一般需求223
8.8.2 即时消息的协议需求224
8.8.3 即时消息的安全需求224
8.8.4 即时信息的加密和鉴别224
8.8.5 注册需求225
8.8.6 通信需求225
8.9 系统总体设计225
8.10 即时通信系统的实施原理226
8.10.1 即时通信的工作方式226
8.10.2 即时通信的基本技术原理226
8.10.3 即时通信方式227
8.11 功能模块划分227
8.11.1 模块划分227
8.11.2 服务端程序的功能228
8.11.3 客户端程序的功能228
8.11.4 服务端程序的多线程229
8.11.5 客户端程