Visual C++ 2017網絡編程實戰 ( 簡體 字) |
作者:朱晨冰 | 類別:1. -> 程式設計 -> C++ -> VC++ |
譯者: |
出版社:清華大學出版社 | 3dWoo書號: 52262 詢問書籍請說出此書號!【缺書】 NT售價: 540 元 |
出版日:1/1/2020 |
頁數:530 |
光碟數:0 |
|
站長推薦:  |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787302540205 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:Visual C++2017(簡稱VC 2017)在Windows應用程序開發工具中占有重要的地位,也是業界進行VC開發的主流版本工具,而網絡編程又是VC一線開發中的重中之重。針對當前介紹使用VC2017進行網絡開發的書籍不是很多、也不夠全面等特點,本書作者決定撰寫一本面對初中級讀者的VC2017網絡開發方面的書。作者在平時工作中經常使用許多VC系列開發工具,積累了不少技術心得和開發經驗,知道初學者或剛剛踏上工作崗位的同仁難點在哪里,將所涉及的技巧和方法講述出來。如果本書能對大家有所幫助,這將是一件很榮幸的事。作者所做的一切工作均來源于長期的實踐。對于VC2017中的網絡開發理論和開發技巧,都從基本的內容講起,然后稍微提高(循序漸進是本書一大原則)。軟件開發是一門需要實踐的技術,本書理論盡量用簡單易懂的語言表達,并配合以相應的實例,避免空洞的說教,對于其中的技術細節,都盡量講深講透,為讀者提供翔實可靠的技術資料。 另外,本書假定讀者有C/C++的基礎和VC2017基本編程能力,關于VC2017的基礎開發知識,可以參考作者的《Visual C++ 2017從入門到精通》。
代碼下載與支持郵箱 本書代碼下載地址可掃描右邊二維碼獲得。 如果下載有問題,請聯系,郵件主題為“Visual C++ 2017網絡編程實戰”。
本書作者 除了封面署名人員外,李建英老師也參與了本書的創作,在此表示感謝。雖然作者盡了最大努力,但是本書難免會存在瑕疵,希望讀者朋友不吝賜教。
作 者 2019年10月 |
內容簡介:本書從初學者的角度出發,以通俗易懂的語言,配合豐富多彩的實例,詳細地介紹了使用Visual C++ 2017進行網絡編程應該掌握的各方面知識,以及網絡編程的常見場景和較難技術,快速提高開發技能。 全書共分18章,內容包括TCP/IP協議、本機網絡信息編程、多線程編程、套接字編程、簡單網絡服務器設計、基于IO模型的網絡開發、網絡性能工具iperf的使用、WinInet開發瀏覽器實例、HTTP編程、Web編程、中國象棋網絡對弈實例、winpcap編程、ICE網絡編程和IPv6網絡編程。 本書適合Visual C++網絡編程初學者閱讀,可供開發人員查閱參考,也適合作為高等院校相關專業的教學參考書。 |
目錄:第1章TCP/IP協議基礎 1 1.1什么是TCP/IP 1 1.2TCP/IP協議的分層結構 1 1.3應用層 5 1.3.1DNS 5 1.3.2端口的概念 6 1.4傳輸層 6 1.4.1TCP協議 7 1.4.2UDP協議 7 1.5網絡層 8 1.5.1IP協議 8 1.5.2ARP協議 15 1.5.3RARP協議 16 1.5.4ICMP協議 17 1.6數據鏈路層 26 1.6.1數據鏈路層的基本概念 26 1.6.2數據鏈路層的主要功能 26 1.7一些容易混淆的術語 27 1.7.1MTU 27 1.7.2IP分組的分片問題 28 1.7.3數據段 28 1.7.4數據報 28 1.7.5數據包 28 1.7.6數據幀 29 1.7.7比特流 29 第2章本機網絡信息編程 30 2.1獲取本地計算機的名稱和IP 30 2.1.1gethostname函數 30 2.1.2gethostbyname函數 30 2.1.3inet_ntoa函數 31 2.2獲取本機子網IP地址和子網掩碼 34 2.3獲取本機物理網卡地址信息 36 2.4獲取本機所有網卡(包括虛擬網卡)的列表和信息 38 2.5獲取本地計算機的IP協議統計數據 41 2.6獲取本機的DNS地址 44 2.7獲取本機上的TCP統計數據 46 2.8獲取本機上的UDP統計數據 49 2.9獲取本機上支持的網絡協議信息 50 2.10獲取本地計算機的域名 52 第3章多線程編程 54 3.1多線程編程的基本概念 54 3.1.1為何要用多線程 54 3.1.2操作系統和多線程 54 3.1.3進程和線程 55 3.1.4線程調度 56 3.1.5線程函數 59 3.1.6線程對象和句柄 59 3.1.7線程對象的安全屬性 59 3.1.8線程標識 60 3.1.9多線程編程的3種庫 60 3.2利用Win32API函數進行多線程開發 60 3.2.1線程的創建 61 3.2.2線程的結束 65 3.2.3線程和MFC控件交互 71 3.2.4線程的暫停和恢復 78 3.2.5消息線程和窗口線程 81 3.2.6線程同步 84 3.3CRT庫中的多線程函數 97 3.4MFC多線程開發 105 3.4.1線程的創建 106 3.4.2線程同步 109 第4章套接字基礎 124 4.1套接字基本概念 124 4.1.1網絡程序的架構 125 4.1.2套接字的類型 126 4.2套接字地址 127 4.2.1通用socket地址 127 4.2.2專用socket地址 128 4.2.3IP地址的轉換 129 4.2.4主機字節序和網絡字節序 131 4.2.5I/O工作模式和I/O模型 133 第5章TCP套接字編程 134 5.1TCP套接字編程的基本步驟 134 5.2協議簇和地址簇 134 5.3socket地址 136 5.3.1通用socket地址 137 5.3.2專用socket地址 138 5.3.3IP地址的轉換 139 5.3.4獲取套接字地址 141 5.4TCP套接字編程的相關函數 143 5.4.1WSAStartup函數 143 5.4.2socket/WSASocket函數 143 5.4.3bind函數 145 5.4.4listen函數 147 5.4.5accept/WSAAccept函數 147 5.4.6connect/WSAConnect函數 148 5.4.7send/WSASend函數 148 5.4.8recv/WSARecv函數 148 5.4.9closesocket函數 149 5.4.10inet_addr函數 149 5.4.11inet_ntoa函數 149 5.4.12htonl函數 149 5.4.13htons函數 150 5.4.14WSAAsyncSelect函數 150 5.4.15WSACleanup函數 151 5.5簡單的TCP套接字編程 151 5.6深入理解TCP編程 156 5.6.1數據發送和接收涉及的緩沖區 156 5.6.2TCP數據傳輸的特點 157 5.6.3數據發送的6種情形 157 5.6.4數據接收時碰到的情形 159 5.6.5一次請求響應的數據接收 160 5.6.6多次請求響應的數據接收 165 5.7I/O控制命令 176 5.8套接字選項 180 5.8.1基本概念 180 5.8.2選項的級別 180 5.8.3獲取套接字選項 182 5.8.4設置套接字選項 187 第6章UDP套接字編程 190 6.1UDP套接字編程的基本步驟 190 6.2UDP套接字編程的相關函數 192 6.2.1sendto/WSASendto函數 192 6.2.2recvfrom/WSARecvfrom函數 192 6.3實戰UDP套接字 192 6.4UDP丟包及無序問題 199 第7章原始套接字編程 200 7.1原始套接字概述 200 7.2原始套接字的強大功能 200 7.3原始套接字的基本編程步驟 202 7.3.1創建原始套接字函數socket 202 7.3.2接收函數recvfrom 204 7.3.3發送函數sendto 206 7.4常規編程示例 206 7.5抓取所有IP數據包 214 7.6抓取所有IP數據包 220 第8章MFC套接字編程 227 8.1概述 227 8.2類CAsyncSocket 227 8.2.1基本概念 227 8.2.2成員函數 228 8.2.3基本用法 232 8.2.4網絡事件處理 234 8.3類CSocket 243 8.3.1基本概念 243 8.3.2成員函數 244 8.3.3基本用法 245 8.4基于CAsyncSocket的網絡五子棋 250 8.4.1概述 250 8.4.2五子棋簡介 251 8.4.3軟件總體架構 251 8.4.4棋盤類—CTable 252 8.4.5游戲模式類—CGame 254 8.4.6消息機制 256 8.4.7主要算法 259 第9章簡單的網絡服務器設計 266 9.1循環服務器 266 9.1.1UDP循環服務器 266 9.1.2TCP循環服務器 267 9.2多線程并發服務器 271 9.3I/O復用服務器 272 第10章基于I/O模型的網絡開發 273 10.1同步和異步 273 10.1.1同步 273 10.1.2異步 274 10.2阻塞和非阻塞 274 10.2.1阻塞 274 10.2.2非阻塞 275 10.3同步/異步和阻塞/非阻塞的關系 276 10.4I/O和網絡I/O 276 10.5I/O模式 277 10.5.1阻塞模式 277 10.5.2非阻塞模式 278 10.6I/O模型 278 10.7選擇模型 279 10.7.1基本概念 279 10.7.2select函數 280 10.7.3實戰select模型 282 10.8異步選擇模型WSAAsyncSelect 288 10.8.1基本概念 288 10.8.2WSAAsyncSelect函數 289 10.8.3實戰WSAAsyncSelect模型 291 10.9事件選擇模型 303 10.9.1基本概念 303 10.9.2WSAEventSelect函數 303 10.9.3實戰WSAEventSelect模型 304 10.10重疊I/O模型 309 10.10.1基本概念 309 10.10.2創建重疊I/O模型下的套接字 312 10.10.3獲取重疊I/O操作完成結果 313 10.10.4基于事件通知(有64個socket的限制) 314 10.10.5基于完成例程 321 10.11完成端口 335 10.11.1基本概念 335 10.11.2完成端口能干什么 336 10.11.3完成端口的優勢 336 10.11.4完成端口編程的基本流程 337 10.11.5相關API 338 第11章網絡性能工具iperf的使用 348 11.1iperf概述 348 11.2iperf的特點 348 11.3iperf的工作原理 348 11.4iperf的主要功能 350 11.5iperf中Linux下的使用 350 11.5.1在Linux下安裝iperf 351 11.5.2iperf的簡單使用 352 11.6iperf中Windows下的使用 353 11.6.1命令行版本 353 11.6.2圖形化版本 353 第12章WinInet開發Internet客戶端 355 12.1什么是WinInet 355 12.2認識WinInetAPI函數 355 12.2.1通用WinInetAPI函數 356 12.2.2WinInetHTTP函數 361 12.2.3WinInetFTP函數 363 12.2.4WinInetGopher函數 364 12.2.5讀取HTTP網頁數據 364 12.3認識MFCWinInet類庫 366 12.3.1訪問HTTP服務器的一般流程 367 12.3.2訪問FTP服務器的流程 368 12.4FTP開發 369 12.4.1FTP概述 369 12.4.2FTP的工作原理 370 12.4.3FTP的傳輸方式 371 12.4.4FTP的工作方式 371 12.4.5FTP命令 372 12.4.6FTP應答碼 375 12.4.7開發FTP客戶端 377 第13章HTTP網絡編程 390 13.1HTTP簡介 390 13.2HTTP的工作原理 390 13.3HTTP的特點 391 13.4HTTP的消息結構 391 13.5客戶端請求消息 392 13.6服務器響應消息 393 13.7HTTP狀態碼 394 13.8HTTP狀態碼分類 394 13.9實現HTTP服務器 395 13.9.1概述 395 13.9.2界面設計 395 13.9.3類CWebServerApp 396 13.9.4類CWebServerDlg 396 13.9.5類CLog 397 13.9.6類CGenericServer 398 13.9.7類CHTTPServer 404 13.9.8運行結果 409 第14章C++Web編程 411 14.1CGI程序的工作方式 411 14.2架設Web服務器Apache 412 14.3ActiveX、OLE和COM 415 14.4什么是OCX 415 14.5ActiveX 416 14.6ActiveX控件 416 14.6.1生成和注冊ActiveX控件 416 14.6.2在網頁html中使用ActiveX控件 420 14.6.3在MFC應用程序中使用ActiveX控件 422 14.6.4在測試容器中使用(測試)ActiveX控件 424 14.6.5在網頁的JavaScript中使用控件 426 14.7為ActiveX控件添加對話框 428 14.8為ActiveX控件添加事件 432 14.8.1常用事件 432 14.8.2自定義事件 434 14.9為ActiveX控件添加方法 438 14.9.1常用方法 438 14.9.2自定義方法 439 第15章中國象棋網上對弈系統 441 15.1電腦游戲概述 441 15.2系統概述 442 15.3系統運行結果 443 15.4系統構成 443 15.5數據結構 443 15.5.1棋盤 443 15.5.2棋子信息數組 445 15.5.3變量與函數 445 15.6圖像繪制 446 15.6.1主窗口 446 15.6.2棋盤的繪制 447 15.6.3棋子的繪制及初始化 447 15.6.4動態顯示 448 15.6.5回看功能 449 15.7規則設置 449 15.7.1棋子規則 449 15.7.2規則算法 450 15.8網絡通信 451 15.8.1CCOM類 451 15.8.2數據代碼 452 15.8.3數據更新 453 15.8.4聊天功能 453 15.9棋子操作 453 15.9.1獲取點擊 453 15.9.2走棋判斷 454 15.9.3光標變化 455 15.10主框架重要函數解析 455 15.10.1WinMain函數 455 15.10.2InitInstance函數 456 15.11通信函數解析 457 15.11.1Listen函數 457 15.11.2ListenThread函數 458 15.11.3SendMsg函數 460 15.12象棋業務邏輯重要函數解析 461 15.12.1Graphics函數 461 15.12.2Draw函數 462 15.12.3InitChessBoard函數 463 15.12.4ChessRule函數 464 第16章WinPcap編程 474 16.1什么是WinPcap 474 16.2WinPcap的歷史 474 16.3WinPcap的功能 475 16.4WinPcap的應用領域 475 16.5WinPcap不能做什么 476 16.6WinPcap組成結構 476 16.7WinPcap內核層NPF 477 16.8WinPcap的數據結構和主要功能函數 478 16.8.1網絡接口的地址 478 16.8.2數據包頭的格式 479 16.8.3pcap文件格式 479 16.8.4獲得網卡列表pcap_findalldevs 480 16.8.5釋放空間函數pcap_freealldevs 481 16.8.6打開網絡設備函數pcap_open_live 481 16.8.7捕獲數據包pcap_loop 482 16.8.8捕獲數據包pcap_dispatch 483 16.8.9捕獲數據包pcap_next_ex 483 16.9搭建WinPcap的開發環境 484 16.9.1WinPcap通信庫的安裝 484 16.9.2準備開發包 486 16.9.3第一個WinPcap應用程序 487 16.9.4捕獲訪問Web站點的網絡包 488 第17章ICE網絡編程 494 17.1ICE簡介 494 17.2ICE的優勢 494 17.3ICE的工作原理 495 17.4ICE調用模式 495 17.5客戶端與服務器端的結構 496 17.6ICE的下載、安裝和配置 496 17.6.1下載ICE 496 17.6.2安裝ICE 497 17.6.3安裝第三方庫 498 17.6.4配置ICE環境變量 499 17.7ICE的使用 500 第18章IPv6網絡編程 501 18.1IPv4的現狀和不足 501 18.1.1地址空間、地址方案與選路的問題 502 18.1.2網絡管理與配置的問題 505 18.1.3服務類型問題 507 18.1.4IP選項的問題 507 18.1.5IPv4安全性問題 508 18.2是增加補丁還是徹底升級改進 508 18.3IPv6的概念 509 18.4IPv6的發展歷史 509 18.5IPv6的特點 511 18.6IPv6地址 511 18.6.1IPv6地址表示方法 511 18.6.2IPv6前綴 513 18.6.3IPv6地址的類型 513 18.7IPv6數據報格式 517 18.8基于IPv6的Socket網絡編程技術 522 18.8.1地址表示 522 18.8.2IPv6的SocketAPI函數 523 18.8.3IPv6下編寫應用程序的注意點 524 18.8.4實戰IPv6 524 |
序: |