前言(CSDN也有Markdown了,好开森)
實戰出精華
在具體的C++網絡編程中提升你的逼格
John Torjo
Boost.Asio C++ 網絡編程
Copyright ? 2013 Packt Publishing
關于作者
做為一名權威的C++專家,John Torjo 的編程生涯已經超過了15年,在這15年中,除了偶爾用 C# 和 Java 敲代碼。他大部分時間都在研究 C++。
他還非常喜歡在 C++ Users Journa l和其它雜志上寫一些編程相關的文章。
閑暇的時候,他喜歡玩撲克、開快車。
他有非常多自由職業,當中一個就把他玩撲克和編程的愛好結合在了一起。假設你想聯系他。能夠發郵件到john.code@torjo.com。
我要感謝我的朋友 Alexandru Chis, Aurelian Hale, Bela Tibor Bartha, Cristian Fatu, Horia Uifaleanu, Nicolae Ghimbovschi 以及 Ovidiu Deac。感謝他們對本書提出的反饋和建議。同一時候我也要感謝 Packt 公司各位對我頻繁錯過截稿日期行為的包容。
然后最須要感謝的是 Chris Kohlhoff。Boost.Asio 的作者,是他寫出了如此偉大的庫。
把這本書獻給我最好的朋友 Darius。
關于評審員
Béla Tibor Bartha
一個使用多種技術和語言進行開發的專業軟件project師。雖然在過去的4年里,他做的是 iOS 和 OSX 應用開發,可是 C++ 陪伴他度過了早期個人游戲項目開發的激情歲月。
我要感謝 John,由于他我才干做這本書的評審
Nicolae Ghimbovschi
一個參加各類 C++ 項目超過5年的天才個人開發人員。
他主要參與一些企業通信project的項目。作為一個狂熱的 Linux 愛好者,他喜歡利用不同的操作系統、腳本工具和編程語言進行測試和實驗。除了編程。他還喜歡騎自行車、瑜伽和冥想。
我要感謝 John 讓我來評審這本書
關于譯者
畫渣程序員mmoaay。技術非常爛。喜歡平面設計、鼠繪、交友、運動和翻譯,可是確作為一僅僅程序員混跡在IT行業。熱愛開源,技術爛就僅僅好做做設計和翻譯的工作。
微博:http://weibo.com/smmoaay
關于avplayer
http://avplayer.org 中國第一技術社區。
文件夾
前言
第一章:Boost.Asio 入門
什么是 Boost.Asio?歷史依賴編譯 Boost.Asio重要的宏 同步 VS 異步 異常 VS 錯誤代碼 Boost.Asio 中的多線程 不僅僅是網絡 計時器 io_service 類 總結第二章:Boost.Asio 基本原理
網絡 API Boost.Asio 命名空間 IP 地址 端點 Sockets同步錯誤代碼Socket 成員函數其它注意事項 read/write/connect自由函數connect 函數read/write 函數 異步編程為什么要異步?異步 run(),run_one(),poll(),poll_one()持續執行run_one(),poll(),poll_one() 函數異步工作異步 post() VS dispatch() VS wrap() 保持執行 總結第三章:回顯服務端/client
TCP 回顯服務端/clientTCP 同步clientTCP 同步服務端TCP 異步clientTCP 同步服務端代碼 UDP 回顯服務端/clientUDP 同步回顯clientUDP 同步回顯服務端 總結第四章:client和服務端
同步client/服務端同步client同步服務端 異步client/服務端異步client異步服務端 總結第五章:同步VS異步
同步異步混合編程 client和服務端之間消息的互相傳遞 client軟件中的同步 I/O 服務端軟件中的同步 I/O同步服務端中的線程 client軟件中的異步 I/O 服務端軟件中的異步 I/O異步服務端中的線程 異步操作 代理實現 總結第六章:Boost.Asio-其它特性
std streams 和 std buffer I/O Boost.Asio 和 STL流 streambuf 類 處理 streambuf 對象的自由函數 協程 總結第七章:Boost.Asio-進階
Asio VS Boost.Asio 調試處理程序跟蹤信息樣例處理程序跟蹤文件 SSL Boost.Asio 的 Windows特性流處理隨機存儲處理對象處理 Boost.Asio 的 POSIX 特性本地 sockects連接本地 socketsPOSIX 文件描寫敘述符Fork總結索引
前言
網絡編程由來已久。并且是一個極富挑戰性的任務。
Boost.Asio 對網絡編程做了一個極好的抽象,從而保證僅僅須要少量的編程就能夠實現一個優雅的client/服務端軟件。
在實現的過程中。它能讓你體會到極大的樂趣。
并且更為故意的是:Boost.Asio 包括了一些非網絡的特性,用 Boost.Asio 寫出來的代碼緊湊、易讀,并且假設依照我在書中所講的來做,你的代碼會無懈可擊。
這本書涵蓋了什么?
第一章:Boost.Asio入門將告訴你 Boost.Asio 是什么?怎么編譯它?順帶著會有一些樣例。你會發現 Boost.Asio 不僅僅是一個網絡庫。同一時候你也會接觸到 Boost.Asio 中最核心的類 io_service。
第二章:Boost.Asio基本原理包括了你必須了解的內容:什么時候使用 Boost.Asio?我們將深入了解異步編程——一種比同步更須要技巧,且更有樂趣的編程方式。
這一章也是在開發你自己的網絡應用時能夠作為參考的一章。
第三章:回顯服務端/client將會告訴你怎樣實現一個小的client/服務端應用;或許這會是你寫過的最簡單的client/服務端應用。
回顯應用就是把client發過來的消息發送回去然后關閉client連接的服務。
我們會先實現一個同步的版本號,然后再實現一個異步的版本號,這樣就能夠非常easy地看到它們之間的不同。
第四章:client和服務端會深入討論怎樣用 Boost.Asio 創建一個簡單的client/服務端應用。
我們將討論怎樣避免諸如內存泄漏和死鎖的缺陷。全部的程序都僅僅是實現一個簡單的框架,從而使你能更方便地對它們進行擴展以滿足你的需求。
第五章:同步 VS 異步會帶你了解在同步和異步方式之間做選擇時須要考慮的事情。首要的事情就是不要混淆它們。
在這一章,我們會發現實現、測試和調試每一個類型應用是非常easy的。
第六章:Boost.Asio 的其它特性將帶你了解 Boost.Asio 一些不為人知的特性。你會發現。雖然 std streams 和 streambufs 有一點點難用,可是卻表現出了它們得天獨厚的優勢。最后,是姍姍來遲的 Boost.Asio 協程,它能夠讓你用一種更易讀的方式來寫異步代碼。(就好像寫同步代碼一樣)
第七章:Boost.Asio 進階包括了一些 Boost.Asio 進階問題的處理。
雖然在日常編程中不須要深入研究它們,可是了解它們對你故意無害(Boost.Asio 高級調試,SSL,Windows 特性。POSIX 特性等)。
讀這本書之前你須要準備什么?
假設要編譯 Boost.Asio 以及執行本書中的樣例,你須要一個現代編譯器。比如,Visual Studio 2008 及其以上版本號或者 g++ 4.4 及其以上版本號
這本書是為誰寫的?
這本書對于那些須要進行網絡編程卻不想深入研究復雜的原始網絡 API 的開發人員來說是一個福音。全部你須要的僅僅是 Boost.Asio 提供的一套 API 。作為著名 Boost C++ 庫的一部分,你僅僅須要額外加入幾個 #include 文件就可以轉換到 Boost.Asio。
在讀這本書之前。你須要熟悉 Boost 核心庫的一些知識,比如 Boost 智能指針、boost::noncopyable、Boost Functors、Boost Bind、shared_ from_this/enabled_shared_from_this 和 Boost 線程(線程和相互排斥量)。同一時候還須要了解 Boost 的 Date/Time。讀者還須要知道堵塞的概念以及“非堵塞”操作。
約定
本書使用不相同式的文字來區分不同種類的信息。
這里給出這些樣式的樣例以及它們的解釋。
文本中的代碼會這樣顯示:“通常一個 io_service 的樣例就足夠了”。
代碼是以下這種:
read(stream, buffer [, extra options])async_read(stream, buffer [, extra options], handler)write(stream, buffer [, extra options])async_write(stream, buffer [, extra options], handler)專業詞匯和重要的單詞用黑體顯示
[!
警告或者重要的凝視在這種一個框里面]
[?技巧在這種一個框里面]
讀者反饋
我們歡迎來自讀者的反饋。告訴我們你對這本書的看法——你喜歡哪部分,不喜歡哪部分。讀者的反饋對我們非常重要,它能讓我們寫出對讀者更有幫助的書。
你僅僅須要發送一封郵件到 feedback@packtpub.com 就可以進行反饋。注意在郵件的主題中注明書名。
假設你有一個擅長的專題,想撰寫一本書或者為某本書做貢獻。
請閱讀我們在 www.packtpub.com/authors 上的作者指引。
用戶支持
如今你已經是 Packt 書籍的擁有者。我們將告訴你一些事項。讓你購買本書得到的收益最大化。
下載演示樣例代碼
你能夠在 http://www.packtpub.com 登錄你的帳號,然后下載你所購買的書籍的全部演示樣例代碼。同一時候。你也能夠通過訪問 http://www.packtpub.com/support 進行注冊。然后這些演示樣例代碼文件將直接發送到你的郵箱。
糾錯
雖然我們已經盡最大的努力去保證書中內容的準確性,可是錯誤還是不可避免的。
假設你在我們的書籍中發現了錯誤——或許是文字,或許是代碼——假設你能將它們報告給我們,我們將不勝感激。
這種話,你不僅能幫助其它讀者。同一時候也能幫助我們改進這本書的下一個版本號。
假設你發現不論什么須要糾正的地方,訪問 http://www.packtpub.com/submit-errata,選擇你的書籍,點擊errata submission form鏈接。然后輸入具體的糾錯信息來將錯誤報告給我們。一經確定,你的提交就會通過。然后這個糾錯就會被上傳到我們的站點,或者加入到那本書的糾錯信息區域的糾錯列表中。
全部已發現的糾錯都能夠訪問 http://www.packtpub.com/support。然后通過選擇書名的方式來查看。
答疑
假設你有關于本書不論什么方面的問題,你能夠通過 questions@packtpub.com 聯系我們。我們將盡我們最大的努力進行解答
總結
以上是生活随笔為你收集整理的前言(CSDN也有Markdown了,好开森)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: easyui combobox设置只读属
- 下一篇: 二叉排序树(BST)构造与应用