Linux C/C++ 服務器開發實踐
朱文偉 李建英
- 出版商: 清華大學
- 出版日期: 2022-07-01
- 定價: $594
- 售價: 7.9 折 $469
- 語言: 簡體中文
- 頁數: 404
- ISBN: 7302608865
- ISBN-13: 9787302608868
-
相關分類:
C 程式語言
-
相關翻譯:
高速伺服器應用開發 - Linux 上使用 C/C++ (繁中版)
立即出貨 (庫存 < 3)
買這商品的人也買了...
-
深入研究 TCP/IP 網路程式設計 (Effective TCP/IP Programming: 44 Tips to Improve Your Network Programs)$550$495 -
實戰網路安全監控|入侵偵測與因應之道 (The Practice of Network Security Monitoring: Understanding Incident Detection and Response)$490$417 -
優化 C++|提高程式效能的有效技術 (Optimized C++: Proven Techniques for Heightened Performance)$680$537 -
$713網絡多人遊戲架構與編程 (Multiplayer Game Programming: Architecting Networked Games) -
無瑕的程式碼-整潔的軟體設計與架構篇 (Clean Architecture: A Craftsman's Guide to Software Structure and Design)$580$452 -
$774Linux C 與 C++ 一線開發實踐 -
網路分析完全實戰手冊 ─ 使用 Wireshark, 2/e (Network Analysis using Wireshark 2 Cookbook, 2/e)$690$538 -
精通嵌入式 Linux 程式設計 (暢銷回饋版)$620$484 -
$648Visual C++ 2017 網絡編程實戰 -
The Pragmatic Programmer 20週年紀念版 (The Pragmatic Programmer, 20th Anniversary Edition)$680$537 -
C++ 服務器開發精髓$1,008$958 -
C++ 程式設計的樂趣|範例實作與專題研究的程式設計課 (C++ Crash Course: A Fast-Paced Introduction)$880$748 -
系統程式設計 (上册)$880$695 -
最實用業界專案精選:用 Spring Boot 和 Spring Cloud 頂級開發(過版書特價)$1,000$399 -
$517C++20 高級編程 -
$352Vue.js 3.x 快速入門 -
$607C++ 嵌入式開發實例精解 -
Web API 設計原則|API 與微服務傳遞價值之道 (Principles of Web API Design: Delivering Value with APIs and Microservices)$520$411 -
EN 帶你寫個作業系統:來趟 RISC-V 開發輕旅行 (iThome鐵人賽系列書)$600$468 -
實戰 Linux 系統數位鑑識 (Practical Linux Forensics: A Guide for Digital Investigators)$620$490 -
Linux 網路內功修煉 - 徹底了解底層原理及高性能架構$780$616 -
Python AI 人員必修的科學計算 - 數學、機率、統計、演算$880$695 -
高速伺服器應用開發 - Linux 上使用 C/C++$880$695 -
演算法邏輯力:工程師必備的演算法解題、設計、加速技巧 (Algorithmic Thinking: A Problem-Based Introduction)$720$475 -
流暢的 C|設計原則、實踐和模式 (Fluent C: Principles, Practices, and Patterns)$680$537
中文年末書展|繁簡參展書2書75折 詳見活動內容 »
-
75折
為你寫的 Vue Components:從原子到系統,一步步用設計思維打造面面俱到的元件實戰力 (iThome 鐵人賽系列書)$780$585 -
75折
BDD in Action, 2/e (中文版)$960$720 -
75折
看不見的戰場:社群、AI 與企業資安危機$750$563 -
79折
AI 精準提問 × 高效應用:DeepSeek、ChatGPT、Claude、Gemini、Copilot 一本搞定$390$308 -
7折
超實用!Word.Excel.PowerPoint 辦公室 Office 365 省時高手必備 50招, 4/e (暢銷回饋版)$420$294 -
75折
裂縫碎光:資安數位生存戰$550$412 -
日本當代最強插畫 2025 : 150位當代最強畫師豪華作品集$640$576 -
79折
Google BI 解決方案:Looker Studio × AI 數據驅動行銷實作,完美整合 Google Analytics 4、Google Ads、ChatGPT、Gemini$630$498 -
79折
超有料 Plus!職場第一實用的 AI 工作術 - 用對 AI 工具、自動化 Agent, 讓生產力全面進化!$599$473 -
75折
從零開始學 Visual C# 2022 程式設計, 4/e (暢銷回饋版)$690$518 -
75折
Windows 11 制霸攻略:圖解 AI 與 Copilot 應用,輕鬆搞懂新手必學的 Windows 技巧$640$480 -
75折
精準駕馭 Word!論文寫作絕非難事 (好評回饋版)$480$360 -
Sam Yang 的插畫藝術:用 Procreate / PS 畫出最強男友視角 x 女孩美好日常$699$629 -
79折
AI 加持!Google Sheets 超級工作流$599$473 -
78折
想要 SSR? 快使用 Nuxt 吧!:Nuxt 讓 Vue.js 更好處理 SEO 搜尋引擎最佳化(iThome鐵人賽系列書)$780$608 -
78折
超實用!業務.總管.人資的辦公室 WORD 365 省時高手必備 50招 (第二版)$500$390 -
7折
Node-RED + YOLO + ESP32-CAM:AIoT 智慧物聯網與邊緣 AI 專題實戰$680$476 -
79折
「生成式⇄AI」:52 個零程式互動體驗,打造新世代人工智慧素養$599$473 -
7折
Windows APT Warfare:惡意程式前線戰術指南, 3/e$720$504 -
75折
我輩程式人:回顧從 Ada 到 AI 這條程式路,程式人如何改變世界的歷史與未來展望 (We, Programmers: A Chronicle of Coders from Ada to AI)$850$637 -
75折
不用自己寫!用 GitHub Copilot 搞定 LLM 應用開發$600$450 -
79折
Tensorflow 接班王者:Google JAX 深度學習又快又強大 (好評回饋版)$780$616 -
79折
GPT4 會你也會 - 共融機器人的多模態互動式情感分析 (好評回饋版)$700$553 -
79折
技術士技能檢定 電腦軟體應用丙級術科解題教本|Office 2021$460$363 -
75折
Notion 與 Notion AI 全能實戰手冊:生活、學習與職場的智慧策略 (暢銷回饋版)$560$420
相關主題
商品描述
本書較為全面地介紹了基於Linux網絡編程的基礎知識和編程技術,章節安排貼近企業項目需求,對基於Linux C/C++語言的多線程編程和Linux操作系統支持的網絡庫函數等進行講解,由易到難,逐層遞進。 本書共分12章,內容包括網絡概述、網絡基礎概念、套接字、TCP編程、UDP編程、原始套接字編程、網絡I/O模型、服務器設計,以及四大綜合實踐項目(HTTP服務器、FTP服務器、並發聊天服務器與C/S和P2P聯合架構的並發遊戲服務器),通過項目練習幫助讀者鞏固所學的編程技術。 本書適合具有Linux C/C++編程基礎、需要掌握Linux服務器編程的開發人員閱讀,也適合高等院校和培訓學校電腦軟件開發相關專業的師生作為參考用書。
目錄大綱
目 錄
第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



