1.1網路編程模型
1.1.1開放系統互連參考模型
1.1.2 TCP/IP協議棧模型
1.1.3套接字編程模型
1.1.4網間多線程會話模型
1.2 P2P網路模型
1.2.1 P2P的發展背景
1.2.2三代P2P網路
1.2.3 P2P網路分類
1.2.4 P2P典型應用舉例
1.3 Windows網路編程
1.3.1Windows網路編程框架
1.3.2Windows網路協議
1.3.3Windows Sockets編程模型
1.3.4WinSock2工作模式
1.3.5第一個網路程序——hostent
習題1 2.1Win32 API窗體編程
2.1.1彈出一個消息框
2.1.2創建一個窗體
2.1.3為窗體添加控制項
2.2WinSock2 API編程框架
2.2.1WinSock2 API程序結構
2.2.2WinSock2 API庫函數
2.2.3WinSock2的新發展
2.3阻塞/非阻塞模式套接字編程
2.3.1阻塞模式套接字客戶機編程
2.3.2阻塞模式套接字伺服器編程
2.3.3非阻塞模式套接字客戶機編程
2.3.4非阻塞模式套接字伺服器編程
2.3.5套接字錯誤處理
2.4非同步套接字編程
2.4.1非同步套接字客戶機編程
2.4.2非同步套接字伺服器編程
2.4.3伺服器響應多客戶機的並發訪問
2.5WinSock2 I/O模型編程
2.5.1Blocking I/O模型
2.5.2select I/O模型
2.5.3WSAAsyncSelect I/O模型
2.5.4WSAEventSelect I/O模型
2.5.5Overlapped I/O模型
2.5.6I/O Completion Port模型
2.5.7I/O模型的選擇
習題2 3.1MFC套接字編程模型
3.1.1MFC編程框架
3.1.2CAsyncSocket類編程模型
3.1.3CSocket類編程模型
3.1.4派生套接字類
3.1.5MFC套接字類的阻塞/非阻塞模式
3.2CAsyncSocket類編程實例
3.2.1點對點通信功能和技術要點
3.2.2創建客戶機
3.2.3客戶機代碼分析
3.2.4創建伺服器
3.2.5伺服器代碼分析
3.2.6點對點通信客戶機與伺服器聯合測試
3.3CSocket類編程實例
3.3.1聊天室功能和技術要點
3.3.2創建聊天室伺服器
3.3.3聊天室伺服器代碼分析
3.3.4創建聊天室客戶機
3.3.5聊天室客戶機代碼分析
3.3.6聊天室客戶機與伺服器聯合測試
習題3 4.1WinInet API編程
4.1.1WinInet HINTERNET句柄
4.1.2WinInet通用API
4.1.3關閉HINTERNET句柄
4.2WinInet FTP編程
4.2.1FTP API簡介
4.2.2FTP伺服器文件目錄遍歷
4.2.3FTP伺服器目錄導航
4.2.4創建和刪除FTP伺服器目錄
4.2.5從FTP伺服器上獲取文件
4.2.6上傳文件到FTP伺服器
4.2.7從FTP伺服器上刪除文件
4.2.8FTP伺服器目錄或文件的重命名
4.3WinInet HTTP編程
4.3.1HTTP API基本操作
4.3.2HTTP Cookies編程
4.3.3HTTP Authentication編程
4.3.4HTTP URL編程
4.3.5獲取HTTP請求的頭部信息
習題4 5.1MFC WinInet概述
5.1.1MFC WinInet基本類
5.1.2MFC WinInet類之間的關聯
5.1.3MFC WinInet客戶機編程步驟
5.1.4MFC WinInet經典編程模型
5.2簡易FTP客戶機編程實例
5.2.1FTP客戶機/伺服器模型
5.2.2功能定義與技術要點
5.2.3FTP伺服器的搭建
5.2.4簡易FTP客戶機的創建步驟
5.2.5主要代碼
5.2.6系統測試
5.3HTTP瀏覽器編程實例
5.3.1瀏覽器/伺服器工作模型
5.3.2MFC CHtmlView編程模型
5.3.3MFCIE的功能和技術要點
5.3.4MFCIE的創建步驟
5.3.5MFCIE功能測試
習題5 6.1SMTP協議
6.1.1SMTP工作模型
6.1.2SMTP命令解析
6.1.3SMTP響應狀態碼
6.2POP3協議
6.2.1POP3工作模型
6.2.2POP3命令解析
6.2.3用POP3命令與163郵箱會話
6.3MIME郵件擴展
6.3.1MIME對電子郵件協議的擴展
6.3.2MIME對郵件信頭的擴展
6.3.3MIME郵件的內容類型
6.3.4Base64編碼
6.4SMTP協議編程實例
6.4.1SMTP發送郵件工作模型
6.4.2功能和技術要點
6.4.3項目創建步驟
6.4.4主要代碼
6.4.5項目測試
6.5POP3協議編程實例
6.5.1POP3客戶機工作模型
6.5.2功能和技術要點
6.5.3項目創建步驟
6.5.4項目測試
習題6 7.1進程與線程
7.1.1進程與線程的關系
7.1.2Windows進程的內存結構
7.1.3Windows線程的優先順序
7.2用C和Win32 API編寫多線程
7.2.1Win32 API線程編程
7.2.2用C語言編寫多線程
7.2.3線程同步
7.2.4創建多線程的步驟
7.2.5多線程程序——笑臉
7.3用C++和MFC編寫多線程
7.3.1MFC線程類
7.3.2用戶界面線程
7.3.3工作線程
7.3.4線程同步類
7.3.5MFC多線程程序——自行車比賽
習題7 8.1WinPcap概述
8.1.1WinPcap的功能
8.1.2Wireshark網路分析工具
8.1.3WinDump網路嗅探工具
8.1.4WinPcap的獲取和安裝
8.1.5WinPcap工作模型
8.1.6NPF與NDIS的關系
8.1.7NPF工作模型
8.1.8WinPcap開發環境配置
8.2WinPcap編程框架
8.2.1結構體與宏定義
8.2.2WinPcap API函數
8.2.3過濾器表達式
8.2.4程序的創建和測試
8.3WinPcap編程應用
8.3.1獲取網路設備列表
8.3.2打開適配器捕獲數據包
8.3.3捕獲和列印所有數據包
8.3.4過濾數據包
8.3.5分析數據包
8.3.6統計網路流量
習題8 9.1五子棋簡介
9.1.1棋盤和棋子
9.1.2五子棋術語
9.1.3行棋規則
9.1.4五子棋的人機博弈
9.1.5如何判斷勝負
9.2人機對戰系統設計
9.2.1功能需求
9.2.2創建項目程序框架
9.2.3導入資源文件
9.2.4主菜單設計
9.2.5人機對戰項目類圖
9.2.6消息結構體設計
9.2.7人機對戰邏輯模型
9.2.8游戲基類CGame的設計
9.2.9人機對戰類COneGame的設計
9.2.10棋盤類CTable的設計
9.2.11界面類CFiveDlg的設計
9.2.12項目測試
9.3網路對戰系統設計
9.3.1擴展功能需求
9.3.2定義對話消息
9.3.3網路對戰新增界面元素
9.3.4網路對戰基本類圖
9.3.5網路對戰通信模型
9.3.6CFiveSocket類的設計
9.3.7CTwoGame類的設計
9.3.8修改CTable類的設計
9.3.9CServerDlg類和CClientDlg類的設計
9.3.10CNameDlg類和CStatDlg類的設計
9.3.11完善CFiveDlg類的設計
9.3.12項目測試
習題9 程序1.1主機名稱和地址解析完整代碼20
程序2.1彈出一個消息框完整代碼25
程序2.2創建一個窗體完整代碼31
程序2.3為窗體添加控制項完整代碼36
程序2.4阻塞模式套接字客戶機完整代碼48
程序2.5阻塞模式套接字伺服器完整代碼52
程序2.6非阻塞模式套接字客戶機完整代碼54
程序2.7非阻塞模式套接字伺服器完整代碼56
程序2.8套接字錯誤處理完整代碼61
程序2.9非同步套接字客戶機完整代碼65
程序2.10非同步套接字伺服器完整代碼73
程序2.11伺服器響應多客戶機的並發訪問完整代碼81
程序2.12TcpClient客戶機程序完整代碼89
程序2.13select I/O模型回送伺服器完整代碼93
程序2.14WSAEventSelect I/O模型回送伺服器完整代碼107
程序2.15用完成埠開發回聲伺服器完整代碼120
程序3.1點對點通信客戶機完整代碼148
程序3.2點對點通信伺服器完整代碼161
程序3.3聊天室伺服器完整代碼178
程序3.4聊天室客戶機完整代碼191
程序4.1Internet數據下載通用常式1206
程序4.2Internet數據下載通用常式2208
程序4.3獲取FTP文件目錄並顯示通用常式210
程序4.4遍歷FTP伺服器目錄並在列表框中顯示214
程序4.5更改當前目錄並顯示216
程序4.6在FTP伺服器上創建新目錄217
程序4.7從FTP伺服器上刪除目錄218
程序4.8從遠程伺服器下載文件219
程序4.9上傳文件到FTP伺服器220
程序4.10從FTP伺服器上刪除文件221
程序4.11FTP伺服器目錄或文件的重命名222
程序4.12建立WWW連接224
程序4.13讀取Cookie227
程序4.14創建會話Cookie和持久Cookie228
程序4.15用InternetErrorDlg處理HTTP驗證229
程序4.16用InternetSetOption處理HTTP驗證230
程序4.17用HttpQueryInfo獲取HTTP請求的頭部信息232
程序5.1創建一個最簡單的瀏覽器237
程序5.2用HTTP下載一個Web頁面並顯示238
程序5.3用FTP下載一個文件238
程序5.4遍歷目錄247
程序5.5下載文件248
程序5.6上傳文件249
程序6.1Base64編碼、解碼程序278
程序7.1列印變數的內存地址292
程序7.2用CreateThread創建兩個計數線程297
程序7.3用C語言編寫字元飄移線程303
程序7.4用C語言編寫多線程同步實例1305
程序7.5用C語言編寫多線程同步實例2307
程序7.6笑臉程序完整代碼308
程序7.7用戶界面線程用於伺服器套接字編程315
程序7.8工作線程的創建和調用317
程序7.9自行車比賽程序完整代碼318
程序8.1獲取網路設備列表完整代碼340
程序8.2打開適配器並捕獲數據包完整代碼342
程序8.3捕獲和列印所有數據包完整代碼344
程序8.4PacketFilter數據包過濾器完整代碼347
程序8.5捕獲UDP數據包並分析其頭部完整代碼350
程序8.6監聽TCP網路流量完整代碼355
程序9.1游戲基類CGame的定義370
程序9.2人機對戰類COneGame的定義372
程序9.3人機對戰類COneGame的實現373
程序9.4人機對戰類CTable的定義380
程序9.5人機對戰類CTable的實現381
程序9.6主界面類CFiveDlg的定義388
程序9.7主界面類CFiveDlg的實現389
程序9.8套接字通信類CFiveSocket的定義396
程序9.9套接字通信類CFiveSocket的實現397
程序9.10網路對戰類CTwoGame的定義398
程序9.11網路對戰類CTwoGame的實現398
程序9.12修改棋盤類CTable400
2. 剛剛大一,學習比較輕松,打算學計算機編程,但是對計算機不算太精通,請問我應該 怎麼做。
經典好書分類熱銷榜
1、java
java編程語言(第三版)---java四大名著----James Gosling(java之父)
java編程思想(第2版)----java四大名著----Bruce Eckel
java編程思想(第3版)----java四大名著----------------Bruce Eckel
java 2核心技術 卷I:基礎知識(原書第7版)---java四大名著-----Cay Horstmann
java 2核心技術 卷II:高級特性(原書第7版)----java四大名著-----Cay Horstmann
Effective java中文版------java四大名著--------Joshua Bloch
精通Struts:基於MVC的java Web設計與開發---孫衛琴
精通Hibernate:java對象持久化技術詳解---孫衛琴
Tomcat與java Web開發技術詳解------------孫衛琴
java與模式------------------------------閻族枯宏
2、c#
C#程序設計-------Charles Petzold「windows編程泰山北斗」---C#語言「倚天屠龍雙劍」
C# Primer中文版--------Stanley B.Lippman---C#語言「倚天屠龍雙劍」
.NET框架程序設計(修訂版)--------Jeffrey Richter「windows編程泰山北斗」---.NET平台四大天王
C# Windows程序設計----------Charles Petzold「windows編程泰山北斗」------.NET平台四大天王
.NET程序設計技術內幕-------------Jeff Prosise---.NET平台四大天王
.NET本質論--第1卷:公共語言運行庫(中文版)--------Chris Sells---.NET平台四大天王
3、C++
C++程序設計語言(特別版)---c++八大金剛----Bjarne Stroustrup「C++之父」
C++ Primer (第3版)中文版----c++八大金剛---Stanley B.Lippman
C++ Primer (第4版)中文版----c++八大金剛---Stanley B.Lippman
C++標准程序庫—自修教程與參考手冊--c++八大金剛--Nicolai M.Josuttis
C++語言的設計和演化-----c++八大金剛----Bjarne Stroustrup「兆陸洞C++之父」
深度探索C++對象模型---c++八大金剛----Stanley B.Lippman
Essential C++中文版---c++八大金剛---Stanley B.Lippman
Effective C++中文版 2nd Edition-----c++八大金剛------Scott Meyers
More Effective C++中文版----c++八大金剛------Scott Meyers
C++編程思想(第2版) 第1卷:標准C++導引--------Bruce Eckel
C++編程思想(第2版)第2卷:實用編程技術 --------Bruce Eckel
C++程序設計--------------------------譚浩強
C++ 程序設計教程(第2版)--------------錢能
C++ Primer Plus(第五版)中文悉禪版---Stephen Prata
廣博如四庫全書The c++ programming language、c++ Primer
深奧如山重水復Inside the c++ object model
程序庫大全The c++ standard libray
工程經驗之積累Effective c++、More Effective c++、Exceptional c++
c++八大金剛:
1、Essentital c++---lippman---C++之父,旁枝暫略,主攻核心,輕薄短小,初學者
2、The c++ programming language----C++之父,技術權威,用詞深峻,思想深遠,c++網路全書代表,聖經。
3、c++ Primer----lippman---縱橫書市十數年,c++最佳教本,c++網路全書代表。
4、Inside the c++ object model-----lippman----揭示c++底層,非常好,非常難。
5、Effective c++-----通過50個編程實例,展示專家經驗,行文有趣,深處淺出。
6、More Effective c++----通過35個編程實例,展示專家經驗,行文有趣,深處淺出。
7、The c++ standard libray---c++標准庫的網路全書。
8、設計模式:可復用面向對象軟體的基礎------good!
4、c
C程序設計語言(第2版·新版)---C語言「倚天屠龍雙劍」---Brian W.Kernighan「C語言之父」
C Primer Plus中文版(第五版)--------C語言「倚天屠龍雙劍」---Stephen Prata
C程序設計(第三版)---------------------------譚浩強
C語言大全(第四版)---------------------------HERBERT SCHILDT
C語言介面與實現:創建可重用軟體的技術-------------DAVID R.HANSON
C語言參考手冊(原書第5版)--------------------------Samuel P.Harbison
C程序設計教程---------------------------------H.M.Deitel/P.J.Deitel
C陷阱與缺陷-----------------------------------Andrew Koenig
5、VB
Visual Basic .NET技術內幕-----VB編程三劍客-----------Francesco Balena「vb首席大師」
Windows程序設計-Visual Basic.NET語言描述--VB編程三劍客-----Charles Petzold「windows編程泰山北斗」---
.NET框架程序設計:Visual Basic.NET語言描述--VB編程三劍客--Jeffrey Richter「windows編程泰山北斗」---
Visual Basic 6編程技術大全------------------------Francesco Balena「vb首席大師」
Visual Basic.NET 從入門到精通-------------------------Petroutsos,E.
高級VISUAL BASIC編程-----------------------------------MATTHEW CURLAND
6、Delphi
Inside VCL(深入核心——VCL架構剖析)----------李維
Delphi 7高效資料庫程序設計--------------李維
面向對象開發實踐之路(Delphi版)----------李維
7、VC
Windows 程序設計(第5版)-----Charles Petzold「windows編程泰山北斗」---
Windows核心編程----------Jeffrey Richter「windows編程泰山北斗」---
Windows高級編程指南---------Jeffrey Richter「windows編程泰山北斗」---
深入淺出MFC(第二版)-----「MFC四大天王」-------侯捷
MFC Windows程序設計(第2版)---MFC四大天王」---------Jeff Prosise
Visual C++ 技術內幕(第4版)--MFC四大天王」--------David Kruglinski
深入解析MFC-------------MFC四大天王」-----------George Shepherd
Visual C++.NET 技術內幕(第6版)-MFC四大天王」------------David Kruglinski
8、vf
Visual Foxpro程序設計參考手冊-------------------張洪舉
專家門診——Visual FoxPro開發答疑160問-------------------張洪舉
Visual FoxPro 6.0/9.0解決方案與範例大全-------------------張洪舉
Visual FoxPro軟體開發模式與應用案例-------------------張洪舉
9、黑客
應用密碼學(協議演算法與C源程序-----------Bruce Schneier
網路信息安全的真相-----------Bruce Schneier
黑客大曝光:網路安全機密與解決方案(第5版)--------STUART MCCLURE
軟體加密技術內幕------------看雪學院
加密與解密——軟體保護技術與完全解決方案------------看雪學院
加密與解密(第二版)--------段鋼
10、匯編
Intel微處理器結構、編程與介面(第六版)---------Barry B. Brey
80*86、奔騰機匯編語言程序設計---------Barry B. Brey
Windows環境下32位匯編語言程序設計(第2版)-----------羅雲彬
IBM-PC匯編語言程序設計(第2版) 本書是國內優秀教材--------沈美明 溫冬嬋
IBM PC匯編語言程序設計(第五版) 這本書籍是國外優秀教材-------PETER ABEL著,沈美明 溫冬蟬譯
11、驅動開發
Windows WDM設備驅動程序開發指南------------------------------------ Chris Cant
Windows 2000/XP WDM設備驅動程序開發(第2版)--------------------------武安河
WINDOWS 2000/XP WDM設備驅動程序開發-------------------------------- 武安河
12、網路
計算機網路第四版中文版----網路編程三劍客--------------Andrew S.Tanenbaum
TCP/IP詳解3卷本--------------------Richard Stevens----網路編程三劍客
UNIX網路編程2卷本--------------------Richard Stevens----網路編程三劍客
用TCP/IP進行網際互聯-----------Douglas E. Comer
高級TCP/IP編程-------------------Jon C. Snader
C++網路編程-----------------------Douglas Schmidt
UNIX環境高級編程(第2版)--------------------Richard Stevens
13、演算法
計算機程序設計藝術-------Donald.E.Knuth----------演算法「倚天屠龍」雙劍
演算法導論-----------------Thomas H. Cormen--------演算法「倚天屠龍」雙劍
離散數學及其應用----------Kenneth H.Rosen
具體數學—計算機科學基礎--------Donald.E.Knuth
14、圖形編程
Windows 圖形編程----------------FENG YUAN --圖形編程界的Charles Petzold之書
15、數據結構
數據結構 C++語言描述》58.00(Data Structures C++) William Ford,William Topp 劉衛東 沈官林
數據結構演算法與應用-C++語言描述》49.00Sartej Sahni 汪詩林 孫曉東等機械工業出版社
16、軟體工程
設計模式--可復用面向對象軟體的基礎
重構—改善既有代碼的設計
17、操作系統
深入理解計算機系統(修訂版)-------RANDAL E.BRYANT
18、Unix
UNIX 網路編程 卷I 套接字聯網API(英文版 第三版
UNIX 編程藝術
UNIX環境高級編程(英文影印第2版-----UNIX編程「聖經
UNIX環境高級編程(英文影印版)(第2版)
UNIX環境高級編程(第2版)
UNIX環境高級編程(第2版)---UNIX編程「聖經
UNIX網路編程 第1卷:套介面API(第3版)
UNIX網路編程卷2:進程間通信(第2版)(英文影印版)
UNIX 網路編程(第二版)第2卷:進程間通信
UNIX編程環境
UNIX 網路編程 卷I 套接字聯網API(英文版 第三版
UNIX系統編程
UNIX環境高級編程
UNIX 網路編程 卷I 套接字聯網API(英文版 第三版)
UNIX網路編程 第1卷:套介面API(第3版)
UNIX 網路編程(第二版)第2卷:進程間通信
UNIX網路編程卷2:進程間通信(第2版)(英文影印版)
UNIX 網路編程(第2版)第1卷:套介面API和X/Open 傳輸介面API
UNIX網路編程(卷1):連網的APLS:套接字與XTI(第二版)(英文影印版)
UNIX環境高級編程
Unix技術手冊
19、linux
Linux內核設計與實現
Linux內核完全注釋
LINUX內核分析及編程
GNU/Linux 編程指南(第二版)
Linux設備驅動程序(第三版)
嵌入式設計及Linux驅動開發指南——基於ARM 9處理器
Linux設備驅動程序 第三版(英文影印版)
Linux內核設計與實現(第2版)
Linux內核設計與實現(英文影印版)(第2版)
linux技術手冊
20、游戲編程
Windows游戲編程大師技巧(第二版
游戲之旅--我的編程感悟
OpenGL超級寶典:第三版
OpenGL編程指南(第四版)
java 游戲高級編程
J2ME手機游戲編程入門
游戲之旅——我的編程感悟
游戲開發中的人工智慧(英文影印版)
3D游戲:卷2 動畫與高級實時渲染技術
面向對象的游戲開發
java 游戲高級編程
3D游戲編程大師技巧
游戲編程精粹
面向對象的游戲開發
3D游戲 卷1:實時渲染與軟體技術
3D游戲:卷2 動畫與高級實時渲染技…
J2ME手機游戲編程入門
Direct3D游戲編程入門教程(第二版…
21、移動開發
Windows Mobile手機應用開發
SYMBIAN OS C++手機應用開發
Windows Mobile手機應用開發--傅曦 齊宇 徐駿
SYMBIAN OS C++手機應用開發 (第2卷)------------------RICHARD HARRISON著,周良忠 王伯欣譯
SYMBIAN OS C++手機應用開發---------------RICHARD HARRISON著,周良忠譯
Windows CE.net內核定製及應用程序開發---------周毓林 寧楊 陸貴強 付林林
嵌入式系統Windows CE 開發技巧與實例--傅曦
Palm OS編程實踐---絕版
22、單片機
單片機輕松入門----------------------------------周堅(平凡老師)
單片機典型模塊設計實例導航-----------------------求是科技
例說8051----------------------------------------張義和 陳敵北
KEIL CX51 V7.0單片機高級語言編程與ΜVISION2應用實踐-----徐愛鈞
單片機應用程序設計技術(修訂版)--------------------周航慈
8051單片機實踐與應用-------------------------------吳金戎
MCS-51系列單片機實用介面技術---------------------李華
23、串並口通訊
Visual C++/Turbo C串口通信編程實踐------------------龔建偉
VISUAL BASIC與RS-232串列通信控制(最新版)----------范逸之
24、電子
無線電識圖與電路故障分析輕松入門(第二版) -------------------胡斌
無線電元器件檢測與修理技術輕松入門(第二版) -------------------胡斌
圖表細說電子技術識圖-------------------胡斌
圖表細說電子元器件-------------------胡斌
圖表細說元器件及實用電路-------------------胡斌
3. 怎樣學習Windows 網路編程
新手必學:windows網路編程經典入門
作者:huyoo
對於一個windows網路編程初學者,下面方法是經典入門。
初學者建議不要用MFC提供的類,而用windows API做一個簡單伺服器和客戶端,這樣有助於對socket編程機制的理解。
為了簡單起見,應用程序是基於MFC的標准對話框。
Winsock用WINDOWS API實現:
(1)伺服器端有兩個線程:
主線程 — 你需要編寫以下函數來實現
#define NETWORK_EVENT USER_MESSAGE+100 file://定義網路事件
sockaddr_in clientaddr; file://暫時存放客戶端IP地址
file://自己定義消息映射函數,將上面定義的網路事件映射到處理函數
file://OnNetEvent為網路事件處理函數,它在下面定義
ON_MESSAGE(NETWORK_EVENT, OnNetEvent);
在你對話框中的初始化函數中調用下面的初始化網路的子函數
BOOL InitNetwork() file://初始化網路
{
file://初始化TCP協議
BOOL ret = WSAStartup(MAKEWORD(2,2), &wsaData);
if(ret != 0)
{
MessageBox("初始化套接字失敗!");
return FALSE;
}
file://創建伺服器端套接字
SOCKET serverSocket
= socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(serverSocket == INVALID_SOCKET)
{
MessageBox("創建套接字失敗!");
closesocket(m_Socket);
WSACleanup();
return FALSE;
}
file://綁定到本地一個埠上
sockaddr_in localaddr;
localaddr.sin_family = AF_INET;
localaddr.sin_port = htons(1688);
localaddr.sin_addr.s_addr = 0;
if(bind(serverSocket ,(const struct sockaddr*)&localaddr,
sizeof(sockaddr)) == SOCKET_ERROR)
{
MessageBox("綁定地址失敗!");
closesocket(m_Socket);
WSACleanup();
return FALSE;
}
file://注冊網路非同步事件,m_hWnd為應用程序的主對話框或主窗口的句柄
WSAAsyncSelect(serverSocket, m_hWnd, NETWORK_EVENT,
FD_ACCEPT | FD_CLOSE | FD_READ | FD_WRITE);
listen(serverSocket, 5); file://設置偵聽模式
return TRUE;
}
file://定義網路事件的響應函數
void OnNetEvent(WPARAM wParam, LPARAM lParam)
{
file://調用API函數,得到網路事件類型
int iEvent = WSAGETSELECTEVENT(lParam);
file://得到發出此事件的客戶端套接字
SOCKET pSock = (SOCKET)wParam;
switch(iEvent)
{
case FD_ACCEPT: file://客戶端連接請求
{
OnAccept();
break;
}
case FD_CLOSE: file://客戶端斷開事件:
{
OnClose(pSock);
break;
}
case FD_READ: file://網路數據包到達事件
{
OnReceive(pSock);
break;
}
case FD_WRITE: file://發送網路數據事件
{
OnSend(pSock);
break;
}
default: break;
}
}
void OnAccept(SOCET pSock) file://響應客戶端連接請求函數
{
int len = sizeof(sockaddr);
file://調用API函數,接受連接,並返回一個新套接字
file://還可以獲得客戶端的IP地址
SOCKET clientSocket = accept(serverSocket,
(struct sockaddr*)&clientaddr, &len);
file://為新的socket注冊非同步事件,注意沒有Accept事件
if(WSAAsyncSelect(clientSocket ,m_hWnd, IP_EVENT,
FD_CLOSE | FD_READ | FD_WRITE) == SOCKET_ERROR)
{
MessageBox("注冊非同步事件失敗!");
return;
}
file://自編函數,將此客戶端的相關信息保存下來:套接字、
// IP地址、登陸時間
saveClientSocket(clientSocket,clientAddr,currentTimer);
}
void OnClose(SOCET pSock)
{
file://自編函數,結束與相應的客戶端的通信,釋放相應資源並做相應處理
endClientSocket(pSock);
}
void OnSend(SOCET pSock)
{
file://自編函數,在給客戶端發數據時做一些預處理
handleOnSend(pSock);
}
void OnReceive(SOCET pSock)
{
recv(...); file://調用API函數,讀出網路緩沖區中的數據包
file://自編函數,將此數據包和發出此數據的客戶端
file://clientSocket封裝成一條網路消息
buildNetMsg(...);
file://自編函數,將此網路消息放入一個消息隊列中,由工作線程去處理
saveNetMsg(...);
SetEvent(...); file://用事件對象觸發工作線程
}
客戶端登陸後,隨即把自己的計算機名發給伺服器,伺服器接到後,把它保存下來。這樣伺服器就可以顯示所有在線客戶端的信息了,包括:客戶端計算機名、IP地址、登陸時間等。
注意: 客戶端沒有OnAccept()函數,但有OnConnect()函數。
工作線程 —
在你的應用程序初始化時,創建並啟動一個工作線程
AfxBeginThread(WorkThread,this,THREAD_PRIORITY_NORMAL);
file://this可能為應用程序的主對話框或主窗口的句柄
UINT WorkThread(LPVOID pParam)
{
while(1)
{
file://等待多重事件到來
int ret = WaitForMultipleObject(...);
switch(ret)
{
case OBJECT_0:
{
if(bNewNetMsg) file://查看網路消息隊列是否有新的網路消息
{
readNetMsg(...); file://如有新的網路消息,則讀出
handleNetMsg(...); file://處理此網路消息
}
break;
}
case OBJECT_0 + 1:
{
file://做退出處理
break;
}
default: break;
}
return 0;
}
客戶端為單線程,登陸伺服器時,用connect()函數給伺服器發連接請求;
客戶端沒有OnAccept()函數,但有OnConnect()函數。
在OnConnect()函數里做發連接請求時的預處理;
在OnReceive()函數里響應並處理網路數據;
在OnClose()函數里響應伺服器的關閉事件;
在OnSend()函數里做發數據時的預處理;
如果你還想實現各客戶端之間的在線交流(即所謂的聊天室),你在客戶端還可以基於UDP協議
再做一套多點對多點的區域網組播模型模型,以後在和你聊,你先把上面的程序實現。
以上的I/O非同步模型基於Windows的消息機制,另外還可以用事件模型、重疊模型或完成埠模型,
建議你參考Windows網路編程指南之類的書。
如果你能對上面的機制很熟練,你肯定已經對Winsock編網路程序的機制有一定理解,接下來你可以進行更精彩的編程, 不僅可以在網上傳輸普通數據,而且還
以傳輸語音、視頻數據,你還可以自己做一個聊天室,和你的同學在實驗室的區域網里可以共同分享你的成果。
4. 計算機程序設計有哪些經典必讀書籍
1、Java
Java編程語言銷攜(第三版)---Java四大名著----JamesGosling(Java之父)
Java編程思想(第2版)----Java四大名毀搭著----BruceEckel
Java編程思想(第3版)----Java四大名著----------------BruceEckel
JAVA2核心技術卷I:基礎知識(原書第7版)---Java四大名著-----CayHorstmann
JAVA2核心技術卷II:高級特性(原書第7版)----Java四大名著-----CayHorstmann
EffectiveJava中文版------Java四大名著--------JoshuaBloch
精通Struts:基於MVC的JavaWeb設計與纖斗拿開發---孫衛琴
精通Hibernate:Java對象持久化技術詳解---孫衛琴
Tomcat與JavaWeb開發技術詳解------------孫衛琴
Java與模式------------------------------閻宏
2、C#
C#程序設計-------CharlesPetzold「windows編程泰山北斗」---C#語言「倚天屠龍雙劍」
C#Primer中文版--------StanleyB.Lippman---C#語言「倚天屠龍雙劍」
.NET框架程序設計(修訂版)--------JeffreyRichter「windows編程泰山北斗」---.NET平台四大天王
c#Windows程序設計----------CharlesPetzold「windows編程泰山北斗」------.NET平台四大天王
.NET程序設計技術內幕-------------JeffProsise---.NET平台四大天王
.NET本質論--第1卷:公共語言運行庫(中文版)--------ChrisSells---.NET平台四大天王
3、C++
C++程序設計語言(特別版)---c++八大金剛----BjarneStroustrup「C++之父」
C++Primer(第3版)中文版----c++八大金剛---StanleyB.Lippman
C++Primer(第4版)中文版----c++八大金剛---StanleyB.Lippman
C++標准程序庫—自修教程與參考手冊--c++八大金剛--NicolaiM.Josuttis
C++語言的設計和演化-----c++八大金剛----BjarneStroustrup「C++之父」
深度探索C++對象模型---c++八大金剛----StanleyB.Lippman
EssentialC++中文版---c++八大金剛---StanleyB.Lippman
EffectiveC++中文版2ndEdition-----c++八大金剛------ScottMeyers
MoreEffectiveC++中文版----c++八大金剛------ScottMeyers
C++編程思想(第2版)第1卷:標准C++導引--------BruceEckel
C++編程思想(第2版)第2卷:實用編程技術--------BruceEckel
C++程序設計--------------------------譚浩強
C++程序設計教程(第2版)--------------錢能
C++PrimerPlus(第五版)中文版---StephenPrata
廣博如四庫全書Thec++programminglanguage、c++Primer
深奧如山重水復Insidethec++objectmodel
程序庫大全Thec++standardlibray
工程經驗之積累Effectivec++、MoreEffectivec++、Exceptionalc++
C++八大金剛:
1、Essentitalc++---lippman---C++之父,旁枝暫略,主攻核心,輕薄短小,初學者
2、Thec++programminglanguage----C++之父,技術權威,用詞深峻,思想深遠,c++網路全書代表,聖經。
3、c++Primer----lippman---縱橫書市十數年,c++最佳教本,c++網路全書代表。
4、Insidethec++objectmodel-----lippman----揭示c++底層,非常好,非常難。
5、Effectivec++-----通過50個編程實例,展示專家經驗,行文有趣,深處淺出。
6、MoreEffectivec++----通過35個編程實例,展示專家經驗,行文有趣,深處淺出。
7、Thec++standardlibray---c++標准庫的網路全書。
8、設計模式:可復用面向對象軟體的基礎------good!
4、C語言
C程序設計語言(第2版·新版)---C語言「倚天屠龍雙劍」---BrianW.Kernighan「C語言之父」
CPrimerPlus中文版(第五版)--------C語言「倚天屠龍雙劍」---StephenPrata
C程序設計(第三版)---------------------------譚浩強
C語言大全(第四版)---------------------------HERBERTSCHILDT
C語言介面與實現:創建可重用軟體的技術-------------DAVIDR.HANSON
C語言參考手冊(原書第5版)--------------------------SamuelP.Harbison
C程序設計教程---------------------------------H.M.Deitel/P.J.Deitel
C陷阱與缺陷-----------------------------------AndrewKoenig
5、VB
VisualBasic.NET技術內幕-----VB編程三劍客-----------FrancescoBalena「vb首席大師」
Windows程序設計-VisualBasic.NET語言描述--VB編程三劍客-----CharlesPetzold「windows編程泰山北斗」---
.NET框架程序設計:VisualBasic.NET語言描述--VB編程三劍客--JeffreyRichter「windows編程泰山北斗」---,FrancescoBalena「vb首席大師」
VisualBasic6編程技術大全------------------------FrancescoBalena「vb首席大師」
VisualBasic.NET從入門到精通-------------------------Petroutsos,E.
高級VISUALBASIC編程-----------------------------------MATTHEWCURLAND
6、Delphi
InsideVCL(深入核心——VCL架構剖析)----------李維
Delphi7高效資料庫程序設計--------------李維
面向對象開發實踐之路(Delphi版)----------李維
7、VC
Windows程序設計(第5版)-----CharlesPetzold「windows編程泰山北斗」---
Windows核心編程----------JeffreyRichter「windows編程泰山北斗」---
Windows高級編程指南---------JeffreyRichter「windows編程泰山北斗」---
深入淺出MFC(第二版)-----「MFC四大天王」-------侯捷
MFCWindows程序設計(第2版)---MFC四大天王」---------JeffProsise
VisualC++技術內幕(第4版)--MFC四大天王」--------DavidKruglinski
深入解析MFC-------------MFC四大天王」-----------GeorgeShepherd
VisualC++.NET技術內幕(第6版)-MFC四大天王」------------DavidKruglinski
8、VF
VisualFoxpro程序設計參考手冊-------------------張洪舉
專家門診——VisualFoxPro開發答疑160問-------------------張洪舉
VisualFoxPro6.0/9.0解決方案與範例大全-------------------張洪舉
VisualFoxPro軟體開發模式與應用案例-------------------張洪舉
9、黑客
應用密碼學(協議演算法與C源程序-----------BruceSchneier
網路信息安全的真相-----------BruceSchneier
黑客大曝光:網路安全機密與解決方案(第5版)--------STUARTMCCLURE
軟體加密技術內幕------------看雪學院
加密與解密——軟體保護技術與完全解決方案------------看雪學院
加密與解密(第二版)--------段鋼
10、匯編
Intel微處理器結構、編程與介面(第六版)---------BarryB.Brey
80*86、奔騰機匯編語言程序設計---------BarryB.Brey
Windows環境下32位匯編語言程序設計(第2版)-----------羅雲彬
IBM-PC匯編語言程序設計(第2版)本書是國內優秀教材--------沈美明溫冬嬋
IBMPC匯編語言程序設計(第五版)這本書籍是國外優秀教材-------PETERABEL著,沈美明溫冬蟬譯
11、驅動開發
WindowsWDM設備驅動程序開發指南------------------------------------ChrisCant
Windows2000/XPWDM設備驅動程序開發(第2版)--------------------------武安河
WINDOWS2000/XPWDM設備驅動程序開發--------------------------------武安河
12、網路
計算機網路第四版中文版----網路編程三劍客--------------AndrewS.Tanenbaum
TCP/IP詳解3卷本--------------------RichardStevens----網路編程三劍客
UNIX網路編程2卷本--------------------RichardStevens----網路編程三劍客
用TCP/IP進行網際互聯-----------DouglasE.Comer
高級TCP/IP編程-------------------JonC.Snader
C++網路編程-----------------------DouglasSchmidt
UNIX環境高級編程(第2版)--------------------RichardStevens
13、演算法
計算機程序設計藝術-------Donald.E.Knuth----------演算法「倚天屠龍」雙劍
演算法導論-----------------ThomasH.Cormen--------演算法「倚天屠龍」雙劍
離散數學及其應用----------KennethH.Rosen
具體數學—計算機科學基礎--------Donald.E.Knuth
14、圖形編程
Windows圖形編程----------------FENGYUAN--圖形編程界的CharlesPetzold之書
15、數據結構
數據結構C++語言描述》58.00(DataStructuresC++)WilliamFord,WilliamTopp劉衛東沈官林
數據結構演算法與應用-C++語言描述》49.00SartejSahni汪詩林孫曉東等機械工業出版社
16、軟體工程
設計模式--可復用面向對象軟體的基礎
重構—改善既有代碼的設計
17、操作系統
深入理解計算機系統(修訂版)-------RANDALE.BRYANT
18、Unix
UNIX網路編程卷I套接字聯網API(英文版第三版
UNIX編程藝術
UNIX環境高級編程(英文影印第2版-----UNIX編程「聖經
UNIX環境高級編程(英文影印版)(第2版)
99-UNIX環境高級編程(第2版)
UNIX環境高級編程(第2版)---UNIX編程「聖經
UNIX網路編程第1卷:套介面API(第3版)
UNIX網路編程卷2:進程間通信(第2版)(英文影印版)
UNIX網路編程(第二版)第2卷:進程間通信
UNIX編程環境
UNIX網路編程卷I套接字聯網API(英文版第三版
UNIX系統編程
UNIX環境高級編程
UNIX環境高級編程(英文影印版
88-LINUX內核分析及編程
UNIX網路編程卷I套接字聯網API(英文版第三版)
UNIX網路編程第1卷:套介面API(第3版)
UNIX網路編程(第二版)第2卷:進程間通信
UNIX網路編程卷2:進程間通信(第2版)(英文影印版)
UNIX網路編程(第2版)第1卷:套介面API和X/Open傳輸介面API
UNIX網路編程(卷1):連網的APLS:套接字與XTI(第二版)(英文影印版)
UNIX環境高級編程
UNIX環境高級編程(英文版)
UNIX環境高級編程(第2版)
Unix技術手冊
19、Linux
Linux內核設計與實現
Linux內核完全注釋
LINUX內核分析及編程
GNU/Linux編程指南(第二版)
Linux設備驅動程序(第三版)
嵌入式設計及Linux驅動開發指南——基於ARM9處理器
Linux設備驅動程序第三版(英文影印版)
Linux內核設計與實現(第2版)
Linux內核設計與實現(英文影印版)(第2版)
linux技術手冊
20、游戲編程
Windows游戲編程大師技巧(第二版
游戲之旅--我的編程感悟
OpenGL超級寶典:第三版
OpenGL編程指南(第四版)
Java游戲高級編程
J2ME手機游戲編程入門
游戲之旅——我的編程感悟
游戲開發中的人工智慧(英文影印版)
3D游戲:卷2動畫與高級實時渲染技術
面向對象的游戲開發
Java游戲高級編程
3D游戲編程大師技巧
游戲編程精粹
面向對象的游戲開發
3D游戲卷1:實時渲染與軟體技術
3D游戲:卷2動畫與高級實時渲染技
J2ME手機游戲編程入門
Direct3D游戲編程入門教程(第二版
21、移動開發
WindowsMobile手機應用開發
SYMBIANOSC++手機應用開發
68-WindowsMobile手機應用開發--傅曦齊宇徐駿
48-SYMBIANOSC++手機應用開發(第2卷)------------------RICHARDHARRISON著,周良忠王伯欣譯
68-SYMBIANOSC++手機應用開發---------------RICHARDHARRISON著,周良忠譯
WindowsCE.net內核定製及應用程序開發---------周毓林寧楊陸貴強付林林
嵌入式系統WindowsCE開發技巧與實例--傅曦
PalmOS編程實踐---絕版
22、單片機
單片機輕松入門----------------------------------周堅(平凡老師)
單片機典型模塊設計實例導航-----------------------求是科技
例說8051----------------------------------------張義和陳敵北
KEILCX51V7.0單片機高級語言編程與ΜVISION2應用實踐-----徐愛鈞
單片機應用程序設計技術(修訂版)--------------------周航慈
8051單片機實踐與應用-------------------------------吳金戎
MCS-51系列單片機實用介面技術---------------------李華
23、串並口通訊
VisualC++/TurboC串口通信編程實踐------------------龔建偉
VISUALBASIC與RS-232串列通信控制(最新版)----------范逸之
24、電子
無線電識圖與電路故障分析輕松入門(第二版)-------------------胡斌
無線電元器件檢測與修理技術輕松入門(第二版)-------------------胡斌
圖表細說電子技術識圖-------------------胡斌
圖表細說電子元器件-------------------胡斌
圖表細說元器件及實用電路-------------------胡
5. 推薦幾本c# socket編程書
《Windows網路編程技術》.《windows網路編程第二版》
經典好書:UNIX網路編程2卷本----------作者 :Richard Stevens
希望對你有幫助.