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
希望对你有帮助.