《Linux C/C++服务器开发实践》简介

本书从五大服务器编程基础技术开始,逐步深入到四大项目案例进行融合开发,融合网络编程和一些数据库、跨平台界面编程知识,使得案例讲解系统完整,甚至稍微修改一下就可以上升为商用软件,比如最后一章的并发游戏服务器。

通常网络编程书中,只会分析一个综合案例,而本书干货颇多,提供了HTTP服务器、FTP服务器、并发聊天服务器与并发游戏服务器四大综合案例,可以作为课程设计以及毕业设计的素材。

本书较为全面地介绍了基于Linux网络编程的基础知识和编程技术,章节安排贴近企业项目需求,对基于Linux C/C++语言的多线程编程和Linux操作系统支持的网络库函数等进行讲解,由易到难,逐层递进。

本书内容

本书共分12章,内容包括网络概述、网络基础概念、套接字、TCP编程、UDP编程、原始套接字编程、网络I/O模型、服务器设计,以及四大综合实践项目(HTTP服务器、FTP服务器、并发聊天服务器与C/S和P2P联合架构的并发游戏服务器),通过项目练习帮助读者巩固所学的编程技术。

本书读者

本书适合具有Linux C/C++编程基础、需要掌握Linux服务器编程的开发人员阅读,也适合高等院校和培训学校计算机软件开发相关专业的师生作为参考用书。

本书作者

朱文伟,名校计算机专业统招硕士,20年C\C++、Java开发经验。主导开发过密码、图形、人工智能等产品。精通Linux、Windows系统开发及数据库开发技术。著有图书《Windows C/C++加密解密实战》《密码学原理与Java实现》《Linux C与C++ 一线开发实践》《Visual C++2017从入门到精通》《OpenCV 4.5计算机视觉开发实战(基于VC++)》《OpenCV 4.5计算机视觉开发实战:基于Python》。

本书目录

第1章  TCP/IP基础 1
1.1  TCP/IP协议的分层结构 1
1.2  应用层 5
1.2.1  DNS 5
1.2.2  端口 6
1.3  传输层 6
1.3.1  TCP协议 6
1.3.2  UDP协议 7
1.4  网络层 7
1.4.1  IP协议 7
1.4.2  ARP协议 13
1.4.3  RARP协议 15
1.4.4  ICMP协议 16
1.5  数据链路层 24
1.5.1  数据链路层的基本概念 24
1.5.2  数据链路层主要功能 24
第2章  搭建Linux开发环境 26
2.1  准备虚拟机环境 26
2.1.1  在VMware下安装Linux 26
2.1.2  开启root账户 29
2.1.3  关闭防火墙 30
2.1.4  安装网络工具包 30
2.1.5  启用SSH 31
2.1.6  拍摄快照 32
2.1.7  连接虚拟机Linux 32
2.1.8  和虚拟机互传文件 43
2.2  搭建Linux下C/C++开发环境 44
2.3  搭建Windows下Linux C/C++开发环境 45
2.3.1  Windows下非集成式的Linux C/C++开发环境 45
2.3.2  Windows下集成式的Linux C/C++开发环境 48
第3章  多线程基本编程 52
3.1  使用多线程的好处 52
3.2  多线程编程的基本概念 53
3.2.1  操作系统和多线程 53
3.2.2  线程的基本概念 54
3.2.3  线程的状态 54
3.2.4  线程函数 55
3.2.5  线程标识 55
3.2.6  C++多线程开发的两种方式 55
3.3  利用POSIX多线程API函数进行多线程开发 56
3.3.1  线程的创建 56
3.3.2  线程的属性 61
3.3.3  线程的结束 72
3.3.4  线程退出时的清理机会 79
3.4  C++11中的线程类 85
3.4.1  线程的创建 86
3.4.2  线程的标识符 93
3.4.3  当前线程this_thread 94
3.5  线程同步 97
3.5.1  同步的基本概念 98
3.5.2  临界资源和临界区 102
3.6  基于POSIX进行线程同步 102
3.6.1  互斥锁 102
3.6.2  读写锁 108
3.6.3  条件变量 115
3.7  C++11/14中的线程同步 121
3.7.1  基本互斥锁std::mutex 122
3.7.2  定时互斥锁std::time_mutex 123
3.8  线程池 125
3.8.1  线程池的定义 125
3.8.2  使用线程池的原因 125
3.8.3  基于POSIX实现线程池 126
3.8.4  基于C++11实现线程池 131
第4章  TCP服务器编程 136
4.1  套接字的基本概念 136
4.2  网络程序的架构 137
4.3  IP地址的格式转换 138
4.4  套接字的类型 139
4.5  套接字地址 140
4.5.1  通用socket地址 140
4.5.2  专用socket地址 141
4.5.3  获取套接字地址 142
4.6  主机字节序和网络字节序 144
4.7  协议族和地址族 146
4.8  TCP套接字编程的基本步骤 149
4.9  TCP套接字编程的相关函数 149
4.9.1  BSD socket的头文件 149
4.9.2  socket函数 150
4.9.3  bind函数 151
4.9.4  listen函数 154
4.9.5  accept函数 154
4.9.6  connect函数 155
4.9.7  send函数 155
4.9.8  recv函数 156
4.9.9  close函数 157
4.10  简单的TCP套接字编程 157
4.11  深入理解TCP编程 161
4.11.1  数据发送和接收涉及的缓冲区 161
4.11.2  TCP数据传输的特点 162
4.11.3  数据发送的六种情形 162
4.11.4  数据接收时的情形 163
4.11.5  一次请求响应的数据接收 164
4.11.6  多次请求响应的数据接收 168
4.12  I/O控制命令 179
4.13  套接字选项 182
4.13.1  基本概念 182
4.13.2  选项的级别 182
4.13.3  获取套接字选项 183
4.13.4  设置套接字选项 187
第5章  UDP服务器编程 190
5.1  UDP套接字编程的基本步骤 190
5.2  UDP套接字编程的相关函数 191
5.2.1  sendto函数 192
5.2.2  recvfrom函数 192
5.3  实战UDP套接字 192
5.4  UDP丢包及无序问题 198
第6章  原始套接字编程 199
6.1  原始套接字的强大功能 199
6.2  创建原始套接字的方式 201
6.3  原始套接字的基本编程步骤 201
6.3.1  创建原始套接字函数socket 202
6.3.2  接收函数recvfrom 203
6.3.3  发送函数sendto 205
6.4  AF_INET方式捕获报文 205
6.5  PF_PACKET方式捕获报文 212
第7章  服务器模型设计 219
7.1  I/O模型 220
7.1.1  基本概念 220
7.1.2  同步和异步 220
7.1.3  阻塞和非阻塞 222
7.1.4  同步与异步和阻塞与非阻塞的关系 224
7.1.5  采用socket I/O模型的原因 224
7.1.6  (同步)阻塞I/O模型 225
7.1.7  (同步)非阻塞式I/O模型 226
7.1.8  (同步)I/O多路复用模型 227
7.1.9  (同步)信号驱动式I/O模型 228
7.1.10  异步I/O模型 228
7.1.11  五种I/O模型比较 229
7.2  (分时)循环服务器 230
7.2.1  UDP循环服务器 230
7.2.2  TCP循环服务器 234
7.3  多进程并发服务器 237
7.4  多线程并发服务器 243
7.5  I/O多路复用的服务器 246
7.5.1  使用场景 247
7.5.2  基于select的服务器 247
7.5.3  基于poll的服务器 255
7.5.4  基于epoll的服务器 262

第8章  网络性能工具Iperf 271
8.1  Iperf的特点 271
8.2  Iperf的工作原理 271
8.3  Iperf的主要功能 272
8.4  Iperf在Linux下的使用 273
8.4.1  在Linux下安装Iperf 273
8.4.2  Iperf的简单使用 274
8.5  Iperf在Windows下的使用 275
8.5.1  命令行版本 275
8.5.2  图形化版本 276
第9章  HTTP服务器编程 277
9.1  CGI程序的工作方式 277
9.2  架设Web服务器Apache 278
9.3  HTTP的工作原理 281
9.4  HTTP的特点 281
9.5  HTTP的消息结构 282
9.6  客户端请求消息 282
9.7  服务器响应消息 283
9.8  HTTP状态码 284
9.9  HTTP状态码分类 284
9.10  实现HTTP服务器 285
9.10.1  逻辑架构 285
9.10.2  程序工作流程 286
9.10.3  主要功能函数 286
9.10.4  工程实现 287
第10章  基于Libevent的FTP服务器 299
10.1  Reactor模式 299
10.1.1  Reactor模式的优点 300
10.1.2  Reactor模式的框架 300
10.1.3  Reactor事件处理流程 302
10.2  使用Libevnet的基本流程 302
10.3  下载和编译Libevent 304
10.4  FTP概述 305
10.4.1  FTP的工作原理 306
10.4.2  FTP的传输方式 306
10.4.3  FTP的工作方式 307
10.4.4  FTP命令 308
10.4.5  FTP应答码 311
10.5  开发FTP服务器 312
10.6  开发FTP客户端 318
10.6.1  客户端需求分析 319
10.6.2  概要设计 319
10.6.3  客户端工作流程设计 319
10.6.4  实现主界面 319
10.6.5  实现登录界面 323
10.6.6  实现登录后的操作界面 323
10.6.7  运行结果 328
第11章  并发聊天服务器 331
11.1  系统平台的选择 331
11.1.1  应用系统平台模式的选择 331
11.1.2  C/S模式介绍 332
11.1.3  数据库系统的选择 333
11.2  系统需求分析 333
11.2.1  即时消息的一般需求 333
11.2.2  即时消息的协议需求 333
11.2.3  即时消息的安全需求 334
11.2.4  即时消息的加密和鉴别 334
11.2.5  即时消息的注册需求 334
11.2.6  即时消息的通信需求 334
11.3  系统总体设计 334
11.4  即时通信系统的实施原理 335
11.4.1  IM的工作方式 336
11.4.2  IM的基本技术原理 336
11.4.3  IM的通信方式 336
11.5  功能模块划分 337
11.5.1  模块划分 337
11.5.2  服务器端功能 338
11.5.3  客户端功能 338
11.5.4  服务器端多线程 338
11.5.5  客户端多线程 339
11.6  数据库设计 339
11.6.1  数据库的选择 339
11.6.2  准备MySQL环境 340
11.6.3  Linux下的MySQL的C编程 344
11.6.4  聊天系统数据库设计 350
11.6.5  服务器端设计 351
11.6.6  客户端设计 359
第12章  C/S和P2P联合架构的游戏服务器 366
12.1  网络游戏服务器发展现状 367
12.2  现有网络游戏服务器结构 368
12.2.1  C/S结构 368
12.2.2  游戏大厅代理结构 369
12.2.3  P2P结构 369
12.3  P2P网络游戏技术分析 370
12.4  网络游戏的同步机制 372
12.4.1  事件一致性 372
12.4.2  时间同步 372
12.5  总体设计 373
12.5.1  服务器系统架构模型 373
12.5.2  传输层协议的选择 376
12.5.3  协议包设计 376
12.6  数据库设计 378
12.7  服务器端详细设计和实现 378
12.8  客户端详细设计和实现 388
12.8.1  五子棋简介 388
12.8.2  棋盘类CTable 389
12.8.3  游戏模式类CGame 391
12.8.4  消息机制 393
12.8.5  游戏算法 396


正版购买

《Linux C/C++服务器开发实践》(朱文伟,李建英)【摘要 书评 试读】- 京东图书 (jd.com)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值