新書推薦:
《
半导体纳米器件:物理、技术和应用
》
售價:NT$
806.0
《
创客精选项目设计与制作 第2版 刘笑笑 颜志勇 严国陶
》
售價:NT$
281.0
《
佛山华家班粤菜传承 华家班59位大厨 102道粤菜 图文并茂 菜式制作视频 粤菜故事技法 佛山传统文化 广东科技
》
售價:NT$
1010.0
《
武人琴音(十周年纪念版 逝去的武林系列收官之作 形意拳一门三代:尚云祥、韩伯言、韩瑜的人生故事 凸显百年武人命运)
》
售價:NT$
199.0
《
剑桥斯堪的纳维亚戏剧史(剑桥世界戏剧史译丛)
》
售價:NT$
704.0
《
禅心与箭术:过松弛而有力的生活(乔布斯精神导师、世界禅者——铃木大拙荐)
》
售價:NT$
301.0
《
先进电磁屏蔽材料——基础、性能与应用
》
售價:NT$
1010.0
《
可转债投资实战
》
售價:NT$
454.0
|
編輯推薦: |
本书按照问题驱动、由浅入深的理念,以项目实例的形式介绍基于Visual C的TCPIP WinSock网络编程方法。全书共13章,主要内容包括网络编程的实现原理、控制台版本的TCP通信程序、Win32 API版本的TCP通信程序、异步通信版本的TCP通信程序、UDP通信程序、MFC网络编程、TCP文件传输程序、网络用户登录程序、TCP一对多通信程序、在线考试系统和网络嗅探软件。
本书适合作为高等院校各专业网络编程等课程的教材,也可作为网络编程的培训类教材,还可供网络编程开发人员参考使用。
|
內容簡介: |
本书主要介绍基于Visual C++的WinSock网络编程,以项目实例的形式介绍了:网络编程概述、控制台版本的TCP通信程序、Windows对话框版本的TCP通信程序、异步通信版的TCP通信程序、UDP通信程序、原始套接字编程,MFC网络编程等。并介绍了网络编程的一些实例,如文件传输程序、秒杀软件、在线考试系统等。
|
關於作者: |
唐四薪,中南大学计算机专业硕士研究生毕业,现为衡阳师范学院计算机科学与技术学院讲师,从事电子商务,生物信息学研究,从事电子商务专业课程教学四年,主讲《电子商务安全》课程三届。主持多项校级教研和科研课题,独立编著教材《基于Web标准的网页设计与制作》清华大学出版社出版,以第一作者身份在《生物数学学报》,《生物信息学》,《计算机系统应用》,《计算机工程与科学》等杂志发表论文多篇,有丰富的网络安全经验。
|
目錄:
|
目录
第1章网络编程的实现原理1
1.1网络程序的类型与应用领域1
1.1.1网络程序的类型1
1.1.2网络程序的应用领域3
1.2套接字及其种类5
1.2.1什么是套接字5
1.2.2套接字的类型7
1.2.3网络字节顺序8
1.3Visual C编程基础知识9
1.3.1Visual C字符串处理函数9
1.3.2Visual C新增的数据类型11
习题12第2章控制台版本的TCP通信程序13
2.1套接字编程基础13
2.1.1套接字编程步骤13
2.1.2套接字编程的准备工作14
2.1.3套接字编程中使用的函数16
2.1.4套接字建立连接与TCP三次握手19
2.2最基本的TCP通信程序20
2.2.1服务器端程序的编制21
2.2.2客户端程序的编制22
2.2.3WinSock的错误处理24
2.3UNIX Socket编程24
习题25第3章Win32 API版本的TCP通信程序27
3.1Windows对话框程序27
3.1.1新建对话框程序27
3.1.2处理Windows消息31
3.1.3获取和设置控件的内容33
3.2Windows API程序实例34
3.2.1计算器程序34
3.2.2获取主机名、IP地址和时间的程序37
3.3Win32 API版本的TCP通信程序实例38
3.3.1将控制台程序改造成Windows程序的方法38
3.3.2服务器端程序的编制40
3.3.3客户端程序的编制42
习题45第4章异步通信版本的TCP通信程序46
4.1阻塞与非阻塞模式46
4.1.1引起阻塞的WinSock函数46
4.1.2异步IO模型47
4.1.3WSAAsyncSelect模型47
4.2异步通信版本的TCP通信程序实例50
4.2.1服务器端程序的编制50
4.2.2客户端程序的编制53
习题56第5章UDP通信程序57
5.1UDP通信程序的原理57
5.1.1UDP的通信模式58
5.1.2UDP的数据收发函数60
5.2控制台版本的UDP通信程序实例61
5.2.1服务器端程序的编制61
5.2.2客户端程序的编制62
5.3异步对等UDP通信程序实例63
5.4UDP广播消息的程序实例67
5.4.1设置套接字选项68
5.4.2UDP广播通信程序的编制70
习题74第6章MFC网络编程75
6.1MFC概述75
6.1.1MFC中的类75
6.1.2MFC程序的结构76
6.2MFC版本的计算器程序78
6.2.1设置成员变量79
6.2.2编写代码79
6.2.3在Visual Studio 2010中新建MFC程序81
6.3MFC版本的TCP异步通信程序实例83
6.3.1服务器端程序的编制83
6.3.2客户端程序的编制87
习题90第7章使用CAsyncSocket类和CSocket类92
7.1MFC Socket编程基础92
7.1.1CAsyncSocket类的函数92
7.1.2CAsyncSocket类编程的步骤95
7.2CSocket类版本的TCP通信程序实例95
7.2.1服务器端程序的编制96
7.2.2客户端程序的编制99
7.3CAsyncSocket类版本的TCP通信程序实例102
7.3.1服务器端程序的编制102
7.3.2客户端程序的编制106
习题109第8章TCP文件传输程序110
8.1控制台版本的TCP文件传输程序实例110
8.1.1服务器端程序的编制111
8.1.2客户端程序的编制113
8.2CFile类和CFileDialog类115
8.2.1CFile类的使用115
8.2.2CFileDialog类的使用116
8.2.3使用CFile类和CFileDialog类编制记事本程序118
8.3MFC版本的TCP文件传输程序实例119
8.3.1TCP文件传输程序的流程120
8.3.2服务器端程序的编制121
8.3.3客户端程序的编制125
习题129第9章网络用户登录程序130
9.1MFC访问数据库130
9.1.1访问数据库的原理130
9.1.2ADO访问数据库程序实例131
9.2单机版用户登录程序实例134
9.2.1程序的编制135
9.2.2查询数据库的实现137
9.2.3在用户登录界面与欢迎界面之间传递变量139
9.3网络版用户登录程序实例141
9.3.1服务器端程序的编制142
9.3.2客户端程序的编制146
习题149第10章TCP一对多通信程序150
10.1多线程程序的作用150
10.1.1进程与线程150
10.1.2创建线程的步骤151
10.2控制台版本的多线程TCP通信程序实例153
10.2.1服务器端程序的原理153
10.2.2服务器端程序的编制154
10.3MFC版本的多线程TCP通信程序实例156
10.3.1服务器端程序的原理156
10.3.2服务器端程序的编制157
习题162第11章使用select模型实现一对多通信163
11.1select模型基础163
11.1.1select模型的集合与事件163
11.1.2select模型编程的步骤164
11.2群聊软件实例165
11.2.1服务器端程序的原理166
11.2.2服务器端程序的编制167
11.3服务器远程监控系统实例172
习题175第12章在线考试系统176
12.1重叠IO模型176
12.1.1WSAOVERLAPPED结构体176
12.1.2重叠IO模型的常用函数178
12.1.3重叠IO模型的编程框架180
12.1.4基于重叠IO模型的TCP通信程序182
12.2IO完成端口模型184
12.2.1使用IO完成端口的编程流程185
12.2.2在线考试系统的设计186
习题189第13章网络嗅探软件190
13.1原始套接字概述190
13.1.1创建原始套接字190
13.1.2使用原始套接字收发数据191
13.2编制网络嗅探软件191
13.2.1网络嗅探软件的原理192
13.2.2网络嗅探软件的编制192
习题194附录APython版的TCP通信程序195附录BJava版的TCP通信程序197参考文献200第一部分数 据 结 构
第1章绪论3
1.1数据结构的概念3
1.1.1数据结构的范畴3
1.1.2相关概念和术语4
1.2算法和算法分析7
1.2.1算法的基本概念7
1.2.2算法复杂度11
小结13
习题14第2章线性表15
2.1线性表的逻辑结构15
2.1.1线性表的定义15
2.1.2线性表的基本操作16
2.2线性表的顺序存储及运算实现17
2.2.1顺序存储的特点17
2.2.2顺序表上的运算实现17
2.3线性表的链式存储及运算实现21
2.3.1链式存储的特点22
2.3.2链表上的运算实现24
小结26
习题27第3章特殊线性表28
3.1栈28
3.1.1栈的定义28
3.1.2栈的存储及运算实现29
3.2队列31
3.2.1队列的定义31
3.2.2队列的存储及运算实现33
3.3串35
3.3.1串的定义35
3.3.2串的存储37
小结37
习题38第4章数组39
4.1数组的定义39
4.2数组的存储及运算实现40
小结42
习题42第5章树与二叉树43
5.1树43
5.1.1树的定义43
5.1.2相关术语44
5.2二叉树45
5.2.1二叉树的定义45
5.2.2二叉树的性质46
5.2.3二叉树的存储结构47
5.3二叉树的遍历48
小结50
习题50第6章图51
6.1图的定义和术语51
6.2图的存储表示53
6.3图的遍历55
小结57
习题58第7章查找59
7.1基本概念59
7.2静态查找表60
7.2.1顺序查找60
7.2.2折半查找61
7.2.3索引查找62
7.3动态查找表63
7.3.1二叉排序树64
7.3.2平衡二叉树66
7.4哈希表的查找66
小结69
习题69第8章排序70
8.1基本概念70
8.2插入排序71
8.2.1直接插入排序71
8.2.2希尔排序73
8.3交换排序74
8.3.1冒泡排序74
8.3.2快速排序76
8.4选择排序78
8.5归并排序79
小结81
习题82
第二部分数据库技术
第9章数据库系统概述85
9.1数据库系统的作用85
9.1.1数据与数据管理85
9.1.2数据库应用88
9.2数据库处理技术的发展过程91
9.2.1人工管理阶段91
9.2.2文件系统阶段92
9.2.3数据库系统阶段93
9.2.4高级数据库阶段95
9.3数据模型97
9.3.1概念模型97
9.3.2数据模型101
9.3.3层次模型103
9.3.4网状模型104
9.3.5关系模型106
9.3.6面向对象模型109
9.4数据库系统的结构111
9.4.1数据库系统的三级模式结构111
9.4.2数据库系统的二级映像113
9.4.3数据库体系结构114
9.5数据库管理系统117
9.5.1DBMS的工作模式117
9.5.2DBMS的主要功能118
9.5.3DBMS的组成119
小结120
习题121第10章关系模型与关系代数122
10.1关系模型122
10.2关系代数126
10.2.1集合的三种基本运算交、并、差126
10.2.2关系的基本运算129
小结133
习题134第11章关系数据库标准语言SQL135
11.1SQL概述及特点135
11.1.1SQL概述135
11.1.2SQL的特点136
11.1.3SQL的基本概念137
11.2SQL的数据定义138
11.2.1数据库的定义138
11.2.2基本表的定义141
11.2.3索引的定义147
11.3SQL的单表查询149
11.3.1SELECT语句概述149
11.3.2投影运算151
11.3.3选择运算153
11.3.4排序运算157
11.3.5查询表158
11.4SQL的连接查询159
11.4.1等值与非等值连接159
11.4.2自表连接162
11.4.3外连接163
11.5SQL的聚合查询166
11.5.1聚合函数166
11.5.2分组聚合167
11.6SQL的嵌套子查询169
11.6.1使用IN的子查询169
11.6.2使用比较运算符的子查询170
11.6.3使用存在量词EXISTS的子查询172
11.7集合运算173
11.8SQL的数据操纵174
11.8.1插入数据174
11.8.2更新数据176
11.8.3删除数据178
11.9视图179
11.9.1创建视图179
11.9.2查询视图181
11.9.3视图更新182
11.9.4删除视图183
小结184
习题184第12章数据库设计及优化189
12.1数据库设计方法189
12.1.1数据库和信息系统189
12.1.2数据库设计过程190
12.2需求分析192
12.2.1需求分析的任务192
12.2.2需求分析的步骤193
12.2.3需求分析的方法193
12.3概念结构设计195
12.3.1概念模型的基本概念195
12.3.2概念模型的表示方法195
12.3.3概念结构的特点196
12.3.4概念结构设计的方法197
12.3.5概念结构设计的步骤198
12.4规范化200
12.4.1关系模式规范化的必要性200
12.4.2函数依赖201
12.4.3范式与规范化203
12.4.4模式分解原则207
12.4.5规范化的本质分析与总结207
12.5逻辑结构设计208
12.5.1概念模型向关系模型的转换208
12.5.2数据模型的优化211
12.5.3数据库逻辑设计案例212
12.6数据库的物理设计214
12.6.1数据库物理设计的方法214
12.6.2确定数据库的物理结构215
12.6.3对物理结构进行评价216
12.7数据库的实施与维护216
12.7.1数据库的实施216
12.7.2数据库的维护218
小结219
习题219第13章数据库安全性与完整性221
13.1数据库安全性221
13.1.1数据库安全的基本概念221
13.1.2用户管理223
13.1.3角色管理225
13.2数据库完整性226
13.2.1完整性约束的概念和类型227
13.2.2完整性约束的管理228
13.3TransactSQL基础233
13.3.1SQL对象的命名规则和注释233
13.3.2数据类型233
13.3.3变量237
13.3.4函数239
13.3.5批处理和流程控制242
13.4游标246
13.4.1游标的使用247
13.4.2当前游标集的修改250
13.5存储过程252
13.5.1存储过程概述252
13.5.2创建和执行存储过程252
13.5.3修改和删除存储过程254
13.6触发器255
13.6.1触发器概述255
13.6.2创建触发器256
13.6.3删除和修改触发器258
小结259
习题259第14章事务管理与恢复260
14.1事务260
14.1.1并发操作时产生的问题260
14.1.2事务的概念262
14.1.3事务的特性263
14.2并发控制264
14.3恢复与备份266
14.3.1数据库系统的故障266
14.3.2数据库备份267
14.3.3数据库恢复268
小结271
习题271第15章数据库应用开发272
15.1ADO.NET概述272
15.2系统分析276
15.2.1系统需求分析276
15.2.2系统用例分析277
15.2.3系统时序图278
15.3数据库分析和设计279
15.3.1数据库分析279
15.3.2数据库设计279
15.4数据库的连接和访问281
15.4.1数据库的连接281
15.4.2数据库的访问282
15.5系统界面设计及相关代码实现284
15.5.1酒店客房管理系统的首界面设计及其代码实现284
15.5.2客房信息管理界面的设计及其代码实现286
小结287参考文献288
|
內容試閱:
|
前言
TCPIP网络编程(俗称Socket编程)是针对TCPIP协议簇(如TCP、UDP)进行的网络编程。这是一种最传统的网络编程方式,许多在互联网早期诞生的网络软件(如QQ、Foxmail等)都是采用TCPIP网络编程技术开发出来的。
相对于基于应用层协议(如HTTP)的Web编程来说,TCPIP 网络编程由于是基于更低层的协议进行的,必须编程实现创建套接字、监听、建立连接等前期步骤,才能进行网络通信,而Web编程却能依靠HTTP直接收发数据,因此,TCPIP网络编程的入门难度明显比Web编程要大得多。同时,TCPIP网络编程主要用于开发CS结构或P2P结构的软件,这类软件需要开发Windows界面,还经常会涉及多线程编程以及线程之间参数的传递,因此,在TCPIP网络程序中,通常网络通信代码、Windows界面代码及多线程处理代码混杂在一起,这无疑也增加了TCPIP网络编程的学习难度。
TCPIP网络编程相对于当今的Web编程来说虽然属于冷门,但其实际应用领域还是很广的,并且有些应用具有不可替代性(例如工业控制软件、物联网通信软件等)。随着物联网技术的普及,TCPIP网络编程必将再次变得重要起来。以慕课网(www.imooc.com)为例,关于Socket编程技术的相关课程多达9门,有的课程还指出: 掌握了Socket技术,就等于掌握了推送、IM、物联网等领域的命脉学习本课程后,物联网相关通信工作不再是难题,且你有能力成为物联网协议的制定者。这足以说明学习TCPIP 网络编程大有可为。
目前市场上有很多网络编程的教材,其读者对象主要是已经很好地掌握了Visual CMFC编程的学生。但实际情况是很多学生只有C语言和面向对象编程的基础知识,几乎还不具备任何Windows程序开发的知识和经验,编程能力不足。本书正是为了帮助这些学生快速掌握TCPIP网络编程技术而编写的。本书在内容编排上注重以下几点。
(1) 分散难点,由浅入深,问题驱动。例如,在程序类型上,按照控制台程序Windows API程序MFC程序的顺序组织案例;在开发技术上,按照TCP一对一同步通信TCP异步通信TCP一对多通信select模型一对多通信IO完成端口模型的顺序依次展开。这样,就将TCPIP网络编程的难点WinSock的5种IO模型分散到不同的章节实例中。
(2) 本书大部分案例程序是Windows界面程序,这样有利于提高学生的学习兴趣,并且能让学生掌握如何将控制台程序转换成Windows界面程序,这是很有实用价值的技能。
(3) 考虑到很多学生的Visual C编程基础不好,本书在介绍网络程序之前,先介绍一些预备程序。TCPIP网络编程的另一个难点是很多程序都不可避免地涉及多线程,本书将多线程编程也分散安排在几章的实例中讲解。
(4) 摒弃了用WinSock编程制作浏览器、FTP客户端和电子邮件客户端等内容。因为这些软件已经有很多现成的,完全不需要用户自己开发,所以这些内容也没有实用价值,且不能让学生产生学习兴趣。本书另外安排了群聊软件、网络用户登录系统、在线考试系统等实用价值很大且有趣味性的案例。
目前TCPIP 网络编程的语言有C、Python、Java等。Python、Java等语言都对网络编程的核心WinSock函数进行了封装,而C可直接使用WinSock函数进行编程,这样更有利于学生理解TCPIP网络编程的底层实现细节,是纯正的TCPIP网络编程,学生学会使用C的Win32 API进行TCPIP网络编程后,就很容易掌握Linux、UNIX等环境下的网络编程方法;同时,C语言效率高,适合物联网、工控软件的开发。基于以上考虑,本书采用Visual C作为TCPIP网络编程的实现语言;同时,为了帮助读者融会贯通,本书在附录中介绍了使用Python和Java制作的TCP通信程序。
本书为教师提供教学用多媒体课件、实例源文件和习题参考答案,可在清华大学出版社网站(www.tup.com.cn)本书页面中免费下载,也可访问本书在超星网的配套课程(mooc1.chaoxing.comcourse201699197.html),或者和作者联系(tangsix@163.com)。
本书是微课版,提供了20个配套视频,在Visual Studio 2010环境中对书中的关键内容进行了演示和讲解,扫描书中相应位置的二维码即可观看。
本书编写分工如下: 唐四薪编写了第1~8章,郑光勇编写了第9、10章,唐琼编写了第11章,湖南中兴网信科技有限公司的欧阳宏编写了第12章,林睦纲、谭晓兰、喻缘、刘燕群、唐沪湘、刘旭阳、陆彩琴、唐金娟、谢海波、尹军、唐琼、何青、唐佐芝、舒清健等编写了第13章。
本书的写作得到湖南省普通高等学校教学改革研究项目(2018)CDIO理念下基于混合式教学的网络编程课程教学改革探索与实践的支持。本书是湖南省教育厅科学研究一般项目半监督学习方法在RNA比较序列分析中的应用(编号: 15C0204) 的研究成果。
限于作者水平,书中不妥之处在所难免,恳请广大读者和同行批评指正。
编者2019年5月
|
|