• Linux C/C++服务器开发实践
21年品牌 40万+商家 超1.5亿件商品

Linux C/C++服务器开发实践

批量上传,套装书可能不全,下单前咨询在线客服! 正版书 !!!

47.42 4.8折 99 全新

库存10件

四川成都
认证卖家担保交易快速发货售后保障

作者朱文伟 李建英

出版社清华大学出版社

ISBN9787302608868

出版时间2022-07

装帧平装

开本16开

定价99元

货号29427013

上书时间2024-10-21

百叶图书

已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
前言

当前图书市场上,参加工作3~4年的Linux开发工程师能参考的实用型网络编程书不多,不少Linux网络编程书还从编辑器、编译器如何使用讲起,那些内容都是给学生或者刚刚参加工作的人员看的,适用于未接触过Linux开发的人。Linux网络编程重要的基础有两点,一是Linux多线程编程功底,二是对网络协议的理解。笔者以前编写的《Linux C与C 一线开发实践》对Linux基础编程进行了较为详细的讲述,也取得到了不错的市场反馈。很多读者都问笔者:下一步想深入地学习Linux编程,应该看哪些书?我想,Linux编程的两大就业领域中,一个是嵌入式开发,另一个是网络服务器编程。前者目前书籍较多。而后者,尤其是有深度、符合招聘市场要求的从基础到案例的网络编程书非常少!当前网络系统越来越复杂,应用范围越来越大,迫切需要新的技术来应对新应用的挑战。这一点可以从广大招聘启事上看得出来。网络编程难,难就难在服务器编程。
一本专门讲述Linux服务器编程的书,不但能帮助一般工程师提高网络编程能力,而且还可以为市场输送更符合需求的工程师。笔者常年从事一线Linux服务器编程,了解流行的Linux网络编程技术,并且拥有相关项目经验。对于Linux编程的初学者,可以将本书和笔者的另一本编程书《Linux C与C 一线开发实践》结合起来学习。
关于本书
本书涵盖Linux网络编程从基础到高级开发的知识点,重点讲解了技术性较强的TCP编程、UDP编程和I/O模型编程,同时对每个知识点都从原始概念和基本原理进行了详细和透彻的分析,并对比较复杂和难度较高的内容绘制了原理图进行讲解。书中的示例代码大多是从实际项目总结而来,有很强的实用性。
本书从五大服务器编程基础技术开始逐步深入到四大项目案例进行开发实践,融合基础知识和一些数据库、跨平台界面编程知识,使得我们的案例系统完整且包含客户端,甚至稍微修改就可以上升为商用软件,比如后一章的并发游戏服务器。通常在网络编程书中,一般只会讲解一个综合案例,而本书提供了HTTP服务器、FTP服务器、并发聊天服务器与C/S和P2P联合架构的并发游戏服务器四大项目案例,可以作为课程设计和学生毕业设计的素材。
本书适用的读者
本书由于技术全面、讲解循序渐进、学习曲线坡度小、注释详尽,因此本书适用的读者面很广,可作为学校和培训班教材使用,也可作为工程师自学教材。如果是从来没有接触过Linux和C/C 语言编程的读者,可以先学完《Linux C与C 一线开发实践》,再学本书,那样可以起到事半功倍的效果。另外,本书需要读者有C和C 的基础,好是C 11,因为本书的线程池用到的语言是基于C 11的。
配套源码下载
本书配套的源码,需要使用微信扫描下面二维码获取,可按扫描后的页面提示填写自己的邮箱,把下载链接转发到邮箱中下载。如果发现问题或疑问,请发送电子邮件联系booksaga@163.com,邮件主题为“Linux C/C 服务器开发实践”。
 
本书作者与鸣谢
本书笔者为朱文伟和李建英。本书的顺利出版,离不开清华大学出版社老师们的帮助,在此表示衷心的感谢。虽然笔者尽了努力编写本书,但书中依然可能存在疏漏之处,敬请读者提出宝贵的意见和建议。

 

作  者
2022年6月



导语摘要

本书较为全面地介绍了基于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从入门到精通》。



目录

第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网络编程的基础知识和编程技术,章节安排贴近企业项目需求,对基于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从入门到精通》。



   相关推荐   

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP