封面
版权信息
内容简介
前言
第1章 TCP/IP基础
1.1 TCP/IP协议的分层结构
1.2 应用层
1.2.1 DNS
1.2.2 端口
1.3 传输层
1.3.1 TCP协议
1.3.2 UDP协议
1.4 网络层
1.4.1 IP协议
1.4.2 ARP协议
1.4.3 RARP协议
1.4.4 ICMP协议
1.5 数据链路层
1.5.1 数据链路层的基本概念
1.5.2 数据链路层主要功能
第2章 搭建Linux开发环境
2.1 准备虚拟机环境
2.1.1 在VMware下安装Linux
2.1.2 开启root账户
2.1.3 关闭防火墙
2.1.4 安装网络工具包
2.1.5 启用SSH
2.1.6 拍摄快照
2.1.7 连接虚拟机Linux
2.1.8 和虚拟机互传文件
2.2 搭建Linux下C/C++开发环境
2.3 搭建Windows下Linux C/C++开发环境
2.3.1 Windows下非集成式的Linux C/C++开发环境
2.3.2 Windows下集成式的Linux C/C++开发环境
第3章 多线程基本编程
3.1 使用多线程的好处
3.2 多线程编程的基本概念
3.2.1 操作系统和多线程
3.2.2 线程的基本概念
3.2.3 线程的状态
3.2.4 线程函数
3.2.5 线程标识
3.2.6 C++多线程开发的两种方式
3.3 利用POSIX多线程API函数进行多线程开发
3.3.1 线程的创建
3.3.2 线程的属性
3.3.3 线程的结束
3.3.4 线程退出时的清理机会
3.4 C++11中的线程类
3.4.1 线程的创建
3.4.2 线程的标识符
3.4.3 当前线程this_thread
3.5 线程同步
3.5.1 同步的基本概念
3.5.2 临界资源和临界区
3.6 基于POSIX进行线程同步
3.6.1 互斥锁
3.6.2 读写锁
3.6.3 条件变量
3.7 C++11/14中的线程同步
3.7.1 基本互斥锁std::mutex
3.7.2 定时互斥锁std::time_mutex
3.8 线程池
3.8.1 线程池的定义
3.8.2 使用线程池的原因
3.8.3 基于POSIX实现线程池
3.8.4 基于C++11实现线程池
第4章 TCP服务器编程
4.1 套接字的基本概念
4.2 网络程序的架构
4.3 IP地址的格式转换
4.4 套接字的类型
4.5 套接字地址
4.5.1 通用socket地址
4.5.2 专用socket地址
4.5.3 获取套接字地址
4.6 主机字节序和网络字节序
4.7 协议族和地址族
4.8 TCP套接字编程的基本步骤
4.9 TCP套接字编程的相关函数
4.9.1 BSD socket的头文件
4.9.2 socket函数
4.9.3 bind函数
4.9.4 listen函数
4.9.5 accept函数
4.9.6 connect函数
4.9.7 send函数
4.9.8 recv函数
4.9.9 close函数
4.10 简单的TCP套接字编程
4.11 深入理解TCP编程
4.11.1 数据发送和接收涉及的缓冲区
4.11.2 TCP数据传输的特点
4.11.3 数据发送的六种情形
4.11.4 数据接收时的情形
4.11.5 一次请求响应的数据接收
4.11.6 多次请求响应的数据接收
4.12 I/O控制命令
4.13 套接字选项
4.13.1 基本概念
4.13.2 选项的级别
4.13.3 获取套接字选项
4.13.4 设置套接字选项
第5章 UDP服务器编程
5.1 UDP套接字编程的基本步骤
5.2 UDP套接字编程的相关函数
5.2.1 sendto函数
5.2.2 recvfrom函数
5.3 实战UDP套接字
5.4 UDP丢包及无序问题
第6章 原始套接字编程
6.1 原始套接字的强大功能
6.2 创建原始套接字的方式
6.3 原始套接字的基本编程步骤
6.3.1 创建原始套接字函数socket
6.3.2 接收函数recvfrom
6.3.3 发送函数sendto
6.4 AF_INET方式捕获报文
6.5 PF_PACKET方式捕获报文
第7章 服务器模型设计
7.1 I/O模型
7.1.1 基本概念
7.1.2 同步和异步
7.1.3 阻塞和非阻塞
7.1.4 同步与异步和阻塞与非阻塞的关系
7.1.5 采用socket I/O模型的原因
7.1.6 (同步)阻塞I/O模型
7.1.7 (同步)非阻塞式I/O模型
7.1.8 (同步)I/O多路复用模型
7.1.9 (同步)信号驱动式I/O模型
7.1.10 异步I/O模型
7.1.11 五种I/O模型比较
7.2 (分时)循环服务器
7.2.1 UDP循环服务器
7.2.2 TCP循环服务器
7.3 多进程并发服务器
7.4 多线程并发服务器
7.5 I/O多路复用的服务器
7.5.1 使用场景
7.5.2 基于select的服务器
7.5.3 基于poll的服务器
7.5.4 基于epoll的服务器
第8章 网络性能工具Iperf
8.1 Iperf的特点
8.2 Iperf的工作原理
8.3 Iperf的主要功能
8.4 Iperf在Linux下的使用
8.4.1 在Linux下安装Iperf
8.4.2 Iperf的简单使用
8.5 Iperf在Windows下的使用
8.5.1 命令行版本
8.5.2 图形化版本
第9章 HTTP服务器编程
9.1 CGI程序的工作方式
9.2 架设Web服务器Apache
9.3 HTTP的工作原理
9.4 HTTP的特点
9.5 HTTP的消息结构
9.6 客户端请求消息
9.7 服务器响应消息
9.8 HTTP状态码
9.9 HTTP状态码分类
9.10 实现HTTP服务器
9.10.1 逻辑架构
9.10.2 程序工作流程
9.10.3 主要功能函数
9.10.4 工程实现
第10章 基于Libevent的FTP服务器
10.1 Reactor模式
10.1.1 Reactor模式的优点
10.1.2 Reactor模式的框架
10.1.3 Reactor事件处理流程
10.2 使用Libevnet的基本流程
10.3 下载和编译Libevent
10.4 FTP概述
10.4.1 FTP的工作原理
10.4.2 FTP的传输方式
10.4.3 FTP的工作方式
10.4.4 FTP命令
10.4.5 FTP应答码
10.5 开发FTP服务器
10.6 开发FTP客户端
10.6.1 客户端需求分析
10.6.2 概要设计
10.6.3 客户端工作流程设计
10.6.4 实现主界面
10.6.5 实现登录界面
10.6.6 实现登录后的操作界面
10.6.7 运行结果
第11章 并发聊天服务器
11.1 系统平台的选择
11.1.1 应用系统平台模式的选择
11.1.2 C/S模式介绍
11.1.3 数据库系统的选择
11.2 系统需求分析
11.2.1 即时消息的一般需求
11.2.2 即时消息的协议需求
11.2.3 即时消息的安全需求
11.2.4 即时消息的加密和鉴别
11.2.5 即时消息的注册需求
11.2.6 即时消息的通信需求
11.3 系统总体设计
11.4 即时通信系统的实施原理
11.4.1 IM的工作方式
11.4.2 IM的基本技术原理
11.4.3 IM的通信方式
11.5 功能模块划分
11.5.1 模块划分
11.5.2 服务器端功能
11.5.3 客户端功能
11.5.4 服务器端多线程
11.5.5 客户端多线程
11.6 数据库设计
11.6.1 数据库的选择
11.6.2 准备MySQL环境
11.6.3 Linux下的MySQL的C编程
11.6.4 聊天系统数据库设计
11.6.5 服务器端设计
11.6.6 客户端设计
第12章 C/S和P2P联合架构的游戏服务器
12.1 网络游戏服务器发展现状
12.2 现有网络游戏服务器结构
12.2.1 C/S结构
12.2.2 游戏大厅代理结构
12.2.3 P2P结构
12.3 P2P网络游戏技术分析
12.4 网络游戏的同步机制
12.4.1 事件一致性
12.4.2 时间同步
12.5 总体设计
12.5.1 服务器系统架构模型
12.5.2 传输层协议的选择
12.5.3 协议包设计
12.6 数据库设计
12.7 服务器端详细设计和实现
12.8 客户端详细设计和实现
12.8.1 五子棋简介
12.8.2 棋盘类CTable
12.8.3 游戏模式类CGame
12.8.4 消息机制
12.8.5 游戏算法
更新时间:2023-08-31 19:55:41