出版時間:2012-8 出版社:機械工業(yè)出版社 作者:Bob Quinn,Dave Shute 譯者:徐磊,騰婧,張瑩,何慧
Tag標(biāo)簽:無
內(nèi)容概要
《華章專業(yè)開發(fā)者叢書:Windows Sockets網(wǎng)絡(luò)編程》是Windows Sockets網(wǎng)絡(luò)編程領(lǐng)域公認(rèn)的經(jīng)典著作,由Windows Sockets 2.0規(guī)范解釋小組負責(zé)人親自執(zhí)筆,權(quán)威性毋庸置疑。它結(jié)合大量示例,對Windows Sockets規(guī)范進行了深刻地解讀,系統(tǒng)講解了Windows Sockets網(wǎng)絡(luò)編程及其相關(guān)的概念、原理、主要命令、操作模式,以及開發(fā)技巧和可能的陷阱,從程序員的角度給出了大量的建議和最佳實踐,是學(xué)習(xí)Windows Sockets網(wǎng)絡(luò)編程不可多得的參考書?! ∪珪譃槿糠郑旱谝徊糠郑ǖ?~6章),提供了翔實的背景知識和框架方面的概念,借助于此框架,讀者可理解WinSock的具體細節(jié),包括Windows Sockets概述、OSI網(wǎng)絡(luò)參考模型、TCP/IP協(xié)議簇中的協(xié)議和可用的服務(wù)、WinSock網(wǎng)絡(luò)應(yīng)用程序的框架及其工作機制、WinSock的三種操作模式、socket通信機制等;第二部分(第7~12章),以FTP客戶端實例為基礎(chǔ)介紹了函數(shù)實例庫,還介紹了客戶端程序、服務(wù)器程序和DLL中間構(gòu)件及它們的相應(yīng)函數(shù),并涵蓋socket命令和選項及移植BSD Sockets相關(guān)事項等;第三部分(第13~17章),介紹了應(yīng)用程序調(diào)試技術(shù)和工具,針對應(yīng)用編程中的陷阱的建議和措施,WinSock API的多種操作系統(tǒng)平臺,WinSock規(guī)范的可選功能和WinSock規(guī)范2.0中的所有新功能。
作者簡介
作者:(美國)奎因(Bob Quinn) (美國)舒特(Dave Shute) 譯者:徐磊 騰婧 張瑩 何慧 奎因(Bob Quinn),WinSock 2.0規(guī)范解釋小組的負責(zé)人,Windows Sockets技術(shù)的開拓者之一,曾為WinSock規(guī)范1.1版本做出重要貢獻,從事TCP/IP網(wǎng)絡(luò)開發(fā)多年,經(jīng)驗頗豐。 舒特(Dave Shute),Windows Sockets技術(shù)的先驅(qū)者和布道者,WinSock問世之初便與Bob一起服務(wù)于著名的FTP軟件公司,對WinSock技術(shù)和TCP/IP等網(wǎng)絡(luò)技術(shù)都有非常透徹的研究,實踐經(jīng)驗極為豐富。
書籍目錄
譯者序 序 前言 第1章 Windows Sockets概述 1.1 什么是Windows Sockets 1.2 Windows Sockets的發(fā)展歷史 1.3 Windows Sockets的優(yōu)勢 1.3.1 Windows Sockets是一個開放的標(biāo)準(zhǔn) 1.3.2 Windows Sockets提供源代碼可移植性 1.3.3 Windows Sockets支持動態(tài)鏈接 1.3.4 Windows Sockets的優(yōu)點 1.4 Windows Sockets的前景 1.5 結(jié)論 第2章 Windows Sockets的概念 2.1 OSI網(wǎng)絡(luò)模型 2.2 WinSock網(wǎng)絡(luò)模型 2.2.1 信息與數(shù)據(jù) 2.2.2 應(yīng)用協(xié)議 2.3 WinSock中的OSI層次 2.3.1 應(yīng)用層 2.3.2 表示層 2.3.3 會話層 2.3.4 傳輸層 2.3.5 網(wǎng)絡(luò)層 2.3.6 數(shù)據(jù)鏈路層 2.3.7 物理層 2.4 模塊化的層次框 2.5 服務(wù)和協(xié)議 2.6 協(xié)議和API 第3章 TCP/IP協(xié)議服務(wù) 3.1 什么是TCP/IP 3.2 TCP/IP的發(fā)展歷史 3.3 傳輸服務(wù) 3.3.1 無連接的服務(wù):UDP 3.3.2 面向連接的服務(wù):TCP 3.3.3 傳輸協(xié)議的選擇:UDP與TCP的對比 3.4 網(wǎng)絡(luò)服務(wù) 3.4.1 IP服務(wù) 3.4.2 ICMP服務(wù) 3.5 支持協(xié)議和服務(wù) 3.5.1 域名服務(wù) 3.5.2 地址解析協(xié)議 3.5.3 其他支持協(xié)議 3.6 TCP/IP的發(fā)展前景 第4章 網(wǎng)絡(luò)應(yīng)用程序工作機制 4.1 客戶端—服務(wù)器模型 4.2 網(wǎng)絡(luò)程序概覽 4.3 socket的打開 4.4 socket的命名 4.4.1 sockaddr結(jié)構(gòu) 4.4.2 sockaddr_in結(jié)構(gòu) 4.4.3 端口號 4.4.4 本地IP地址 4.4.5 什么是socket名稱 4.4.6 客戶端socket名稱是可選的 4.5 與另一個socket建立關(guān)聯(lián) 4.5.1 服務(wù)器如何準(zhǔn)備建立關(guān)聯(lián) 4.5.2 客戶端如何發(fā)起一個關(guān)聯(lián) 4.5.3 服務(wù)器如何完成一個關(guān)聯(lián) 4.6 socket之間的發(fā)送與接收 4.6.1 在“已連接的”socket上發(fā)送數(shù)據(jù) 4.6.2 在“無連接的”socket上發(fā)送數(shù)據(jù) 4.6.3 接收數(shù)據(jù) 4.6.4 socket解復(fù)用器中的關(guān)聯(lián) 4.7 socket的關(guān)閉 4.7.1 closesocket() 4.7.2 shutdown() 4.8 客戶端和服務(wù)器概覽 第5章 操作模式 5.1 什么是操作模式 5.1.1 不掛機,等待:阻塞 5.1.2 掛機后再撥:非阻塞 5.1.3 請求對方回撥:異步 5.2 阻塞模式 5.2.1 阻塞socket 5.2.2 阻塞函數(shù) 5.2.3 偽阻塞的問題 5.2.4 阻塞鉤子函數(shù) 5.2.5 阻塞情境 5.2.6 撤銷阻塞操作 5.2.7 阻塞操作中的超時 5.2.8 無最少接收限制值 5.2.9 代碼示例 5.3 非阻塞模式 5.3.1 怎樣使socket成為非阻塞的 5.3.2 成功與失敗不是絕對的 5.3.3 探詢而非阻塞 5.3.4 顯式地避讓 5.3.5 代碼示例 5.4 異步模式 5.4.1 認(rèn)識異步函數(shù) 5.4.2 撤銷異步操作 5.4.3 代碼示例 5.4.4 AU_Time應(yīng)用 5.5 性能比較 5.6 平臺比較 5.7 真正的阻塞 5.7.1 線程化的應(yīng)用程序 5.7.2 其他適用性說明 第6章 socket狀態(tài) 6.1 什么是socket狀態(tài) 6.1.1 數(shù)據(jù)報socket的狀態(tài) 6.1.2 流socket的狀態(tài) 6.2 socket狀態(tài)的檢測方法 6.2.1 根據(jù)函數(shù)調(diào)用的成功或失敗檢測 6.2.2 同步檢測 6.2.3 異步檢測 6.3 WSAAsyncSelect() 6.3.1 WSAAsyncSelect()的工作原理 6.3.2 什么是WSAAsyncSelect()事件 6.3.3 避免機會丟失的窗口 6.3.4 什么是重使能函數(shù) 6.3.5 什么是通知消息 6.3.6 為函數(shù)失敗做好準(zhǔn)備 6.3.7 在響應(yīng)時設(shè)置循環(huán) 6.3.8 撤銷異步通知 6.3.9 事件描述 6.3.10 AS_Echo應(yīng)用程序 6.4 select() 6.4.1 怎樣使用select() 6.4.2 select()的宏 6.4.3 select()的輸入?yún)?shù) 6.4.4 不要把select()作為定時器 6.4.5 注意0超時 6.4.6 代碼示例 6.5查看數(shù)據(jù) 6.5.1 ioctlsocket()FIONREAD命令 6.5.2 帶有MSG_PEEK標(biāo)志的recv() 6.6 帶外數(shù)據(jù) 6.6.1 TCP的局限 6.6.2 ioctlsocket()函數(shù)和SIOCATMARK命令 6.6.3 代碼示例 6.7 監(jiān)聽狀態(tài) 第7章 應(yīng)用程序和函數(shù)實例庫 7.1 FTP客戶端實例 7.1.1 文件傳輸協(xié)議概述 7.1.2 FTP有限狀態(tài)機 7.1.3 AC_FTP應(yīng)用程序 7.1.4 操作中的AC_FTP 7.2 函數(shù)實例庫 7.2.1 CenterWnd() 7.2.2 CloseConn() 7.2.3 CreateLclFile() 7.2.4 Dlg_About() 7.2.5 GetAddr() 7.2.6 GetBuf() 7.2.7 GetHostID() 7.2.8 GetLclDir() 7.2.9 GetPort() 7.2.10 WSAErrStr() 7.2.11 WSAperror() 7.3 WinSockx.h 7.3.1 Globalsc 7.3.2 WSA_Xtra.h 第8章 主機名稱與主機地址 8.1 主機名稱與主機地址解析 8.1.1 hostent結(jié)構(gòu) 8.1.2 主機名稱解析 8.1.3 地址解析 8.2 主機表、域名系統(tǒng)和網(wǎng)絡(luò)信息服務(wù) 8.2.1 主機表 8.2.2 域名系統(tǒng) 8.2.3 網(wǎng)絡(luò)信息服務(wù) 8.3 本地主機信息 8.4 網(wǎng)絡(luò)地址與格式化 8.4.1 in_addr結(jié)構(gòu) 8.4.2 inet_addr() 8.4.3 inet_ntoa() 8.5 協(xié)議族與地址族 第9章 socket信息與控制 9.1 socket控制 9.1.1 FIONBIO 9.1.2 FIONREAD 9.1.3 SIOCATMARK 9.1.4 其他控制命令 9.2 socket選項 9.2.1 getsockopt()與setsockopt() 9.2.2 SO_ACCEPTCONN 9.2.3 SO_BROADCAST 9.2.4 SO_DEBUG 9.2.5 SO_DONTLINGER 9.2.6 SO_DONTROUTE 9.2.7 SO_ERROR 9.2.8 SO_KEEPALIVE 9.2.9 SO_LINGER 9.2.10 SO_OOBINLINE 9.2.11 SO_RCVBUF與SO_SNDBUF 9.2.12 SO_REUSEADDR 9.2.13 SO_TYPE 9.2.14 TCP_NODELAY 9.2.15 不支持的選項 9.2.16 未來會使用的選項 9.3 阻塞鉤子 9.3.1 WSASetBlockingHook() 9.3.2 WSAUnhookBlockingHook() 9.3.3 阻塞鉤子函數(shù) 9.3.4 阻塞狀態(tài) 9.4 socket名稱 9.4.1 getsockname() 9.4.2 getpeemame() 第10章 支持例程 10.1 啟動與清除 10.1.1 WSAStartup() 10.1.2 WSACleanup() 10.2 字節(jié)順序 10.3 服務(wù)名稱與端口號 10.3.1 servent結(jié)構(gòu) 10.3.2 服務(wù)解析 10.3.3 端口解析 10.3.4 服務(wù)數(shù)據(jù)庫 10.4 協(xié)議名稱與協(xié)議號 10.4.1 protoent結(jié)構(gòu) 10.4.2 協(xié)議名稱解析 10.4.3 協(xié)議號解析 10.4.4 協(xié)議數(shù)據(jù)庫 10.5 報錯 10.5.1 WSAGetLastError() 10.5.2 WSASetLastError() 10.5.3 錯誤文本顯示 第11章 WinSock上的DLL 11.1 創(chuàng)建一個新的API 11.1.1 仿真的API 11.1.2 應(yīng)用協(xié)議API 11.1.3 封裝的WinSock API 11.2 DLL的問題 11.2.1 重入 11.2.2 任務(wù)管理 11.2.3 與WinSock DLL的鏈接 11.3 DLL實例 11.3.1 WSASimpl應(yīng)用程序 11.3.2 WSASimpl DLL 第12章 移植BSD Sockets 12.1 Windows Sockets與Berkeley Sockets的差異 12.1.1 socket不是文件句柄 12.1.2 signal()不可用 12.1.3 域名不可用 12.1.4 地址信息和操作不可用 12.1.5 syslog()不可用 12.1.6 變量errno不可用 12.1.7 perror()和strerror()不可用 12.1.8 數(shù)據(jù)庫文件操作不可用 12.1.9 bcmp()、bcopy()和bzero()不可用 12.1.10 本地IPC不可用 12.1.11 OOB API不同 12.1.12 setsockopt()SO_DEBUG是可選的 12.216位Windows的局限性 12.2.116位Windows不清理現(xiàn)場 12.2.216位Windows是非搶占式的 12.2.316位Windows文件系統(tǒng)不安全 12.2.416位Windows使用分段尋址 12.2.5 fork()不可用 12.3 移植Berkeley Sockets的其他事項 12.3.1 包含文件 12.3.2 socket域 12.3.3 socket類型 12.3.4 socket句柄 12.3.5 錯誤值 12.4 函數(shù)列表 …… 第13章 調(diào)試 第14章 該做和不該做的 第15章 系統(tǒng)平臺 第16章 可選特性 第17章 WinSock 2 附錄A TCP/IP協(xié)議首部 附錄B 快速參考 附錄C 錯誤信息參考 附錄D 用戶必備
章節(jié)摘錄
版權(quán)頁: 插圖: 顯然,2.0版本在1.1版本的基礎(chǔ)上更進了一大步,通過提高其可用性和擴展其范圍進一步鞏固了規(guī)范的現(xiàn)有地位。WinSock 2增加的眾多新功能使得API更加靈活和強大,當(dāng)然,也使其復(fù)雜化了。幸運的是,它對于1.1版本的核心API的支持保持不變。 在本書中,我們重點關(guān)注WinSock 1.1版本的API,在第17章中將詳細講述WinSock 2中的一些有用的增補。其中,有些新的特性在WinSock 1.1的某些實現(xiàn)版本中是以選項的形式出現(xiàn)的?;诒緯峁┑膶inSock 1.1的概念和方法的透徹講解,你將能夠更好地掌握和利用WinSock 2實現(xiàn)中的擴展新功能。 1.5 結(jié)論 Windows Sockets 是網(wǎng)絡(luò)應(yīng)用開發(fā)舞臺上不可或缺的角色,它并不完美,在不同的實現(xiàn)版本中還存在一些問題,但是,在應(yīng)用開發(fā)中避免這些差異帶來的問題是可能的。關(guān)鍵是采用防御性程序設(shè)計技術(shù),規(guī)避規(guī)范中的模糊地帶。 在本書中,我們將向讀者展示,為了創(chuàng)建能在任何WinSock實現(xiàn)上成功運行的Windows Sockets應(yīng)用,什么可做,什么不可做,分析在Windows環(huán)境(16位和(或)32位)下開發(fā)一個Win-Sock應(yīng)用的需求。 Windows Sockets最初的承諾是:提供創(chuàng)建通用應(yīng)用的能力。這一目標(biāo)已經(jīng)接近實現(xiàn),在進一步擴展其功能以實現(xiàn)新的承諾的同時,Windows Sockets將保留現(xiàn)有的API。WinSock API承諾將滿足新的網(wǎng)絡(luò)媒體和其他協(xié)議的需求,更不必說那些迄今為止尚未出現(xiàn)的一些全新網(wǎng)絡(luò)應(yīng)用。 計算機正朝著移動的方向發(fā)展,WinSock也如是。由于帶寬在增加,網(wǎng)絡(luò)通道也越來越寬闊,WinSock將使帶寬的利用更加有效。Internet迫切地需要能提供導(dǎo)航、查找、易用的搜索功能的應(yīng)用軟件,而WinSock正是幫助這類應(yīng)用普及和提高的完美平臺。我們目前所觸及的還只是網(wǎng)絡(luò)多媒體分發(fā)的一些淺層應(yīng)用。伴隨著更多的發(fā)現(xiàn),我們會看到WinSock大有用武之地。WinSock是一個讓技術(shù)貼近用戶的工具,它就像是引導(dǎo)者和推動者,已經(jīng)為這個任重道遠的使命做好了準(zhǔn)備。
編輯推薦
《Windows Sockets網(wǎng)絡(luò)編程》是Windows Sockets網(wǎng)絡(luò)編程領(lǐng)域公認(rèn)的經(jīng)典著作,由Windows Sockets 2.0規(guī)范解釋小組負責(zé)人親自執(zhí)筆,權(quán)威性毋庸置疑。它結(jié)合大量示例,對Windows Sockets規(guī)范進行了深刻地解讀,系統(tǒng)講解了Windows Sockets網(wǎng)絡(luò)編程及其相關(guān)的概念、原理、主要命令、操作模式,以及開發(fā)技巧和可能的陷阱,從程序員的角度給出了大量的建議和最佳實踐,是學(xué)習(xí)Windows Sockets網(wǎng)絡(luò)編程不可多得的參考書。
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載
Windows Sockets網(wǎng)絡(luò)編程 PDF格式下載