前言

随着Internet的发展,网络技术已经渗透到人们的生活和工作中。TCP/IP已经成为最流行的网络协议,且还在演变以满足未来的需要。在速度越来越快的计算机硬件和不断更新的软件发展的背后,TCP/IP在任何类型的硬件上都很容易实现和编写应用程序。网络作为中枢神经把世界连在一起。也正是因为网络的出现与发展,编写网络应用程序的程序员和工程师也在不断增加。TCP/IP网络编程看起来非常简单,应用程序接口(application program interface,API)十分易懂。即使初学者也可以使用现代高级语言抽象的客户服务器程序模板来编写应用程序。但是发现初学者在经历了最初的高效编程之后,在软件设计细节面前开始停滞不前,同时发现他们编写的程序正在遭受性能和健壮性的考验,在灵活使用客户服务器模式解决应用问题过程中,缺乏对程序运行可靠性、并发控制、容错等方面的解决方法,造成程序运行不稳定甚至错误。网络编程完全不同于常规的单机编程,每个程序运行都要受网络上其他在线程序的控制和干扰。网络编程是一个充满黑暗角落的领域,一些细节有可能会被错误理解。如果停留在高层语言抽象环境里编程,永远不能掌握客户服务器的实质与精髓。本书对TCP/IP网络编程最精细的基本理论和概念进行了分析和介绍,能照亮读者编程中黑暗的角落并帮助其改正错误。

通过本书的介绍,读者会透彻理解网络编程的许多难点。本书详细介绍了客户服务器编程的所有细节。通过对这些细节的理解,读者将获得相应的知识,即网络协议的内部工作机制如何与应用程序交互。因而对那些以前看起来令人困惑的程序行为就会变得很容易理解,解决问题的办法就会变得很清晰。本书面向套接字的网络编程学习者,只要掌握最基础的C语言编程实例和概念,就能掌握最基本的客户服务器编程细节,更能方便在学习了C++之后,掌握面向对象高级封装环境的网络编程过程。掌握相关的网络协议知识以及操作系统的基础知识将有助于客户服务器编程。本书针对网络编程的初学者,首先强调基本概念和原理的掌握,加强所有章节示例的可读性,然后才考虑代码的优化问题。本书适合所有希望学习Linux的网络编程的读者。Linux操作系统是早期的网络编程环境,对于该环境的掌握就不难了解Windows环境的网络编程,因为Windows操作系统的网络编程环境也是来自于UNIX操作系统的移植,所以使用任何操作系统都不会有问题。网络编程的特点决定了同时学习两种操作系统平台的网络编程是最有效的学习方法。不必为学习本书的内容而特意掌握Linux和Windows两种操作系统的操作方法,只需要了解各自的编译方法即可。本书主要介绍了Linux平台下的套接字函数和调用方法,所有示例程序都是在Linux平台下实现的。

作为一名长期从事计算机网络相关课程教学的教师,作者一直在考虑这样一个问题: 怎样用有限的课堂教学时间为学生系统地讲授网络编程的基本概念、基本原理和应用?教材是教学过程中使用的主要资料,是教与学的主要内容依据,所以一本好的教材应科学、合理地覆盖本门课程的知识,具有严谨的总体结构和章节安排,内容应详略得当且能够突出重点。同时,编写教材的人员也应该注意本门课程与操作系统、C语言课程之间的联系,解决好课程之间的衔接。作者认为编写网络编程教材应有如下的要求: 第一,应具备丰富的实践经验,对自己的专业有深刻的理解;第二,应具备丰富的教学经验,能够把握学生的学习规律,并力求将深奥的理论叙述和讲解简单化;第三,应具备对知识的归纳和总结能力,并具有良好的写作功底,能够将知识阐述得准确、清晰。一本好的教材必须经过精心规划和设计。本书在出版前其内容已经在多年的教学过程中讲授过,作者对内容进行了多次调整和增减,增加了大量易于操作和实验内容。

本书的内容特色是在介绍每一类服务器算法时都增加了配套的示例和讲解过程,并配有源代码和运行结果。让读者可以通过代码运行理解客户服务器算法的实现过程,了解客户服务器的结构。尤其是通信代码的交互过程,它是网络编程的难点所在,特意强调在各种应用过程中使用套接字通信交互的理解和使用。其次强调了并发服务器的编写,它也是服务器编写的难点之一。

本书共分为13章: 第1~5章主要介绍网络编程的主要概念——客户服务器、并发程序、套接字接口及其API;第6章介绍客户编程的基本概念和存在的主要问题,举出实例讲解客户编程的一般方法,隐藏细节的过程库,重点介绍了TCP和UDP的客户编程;第7章介绍服务器编程的基本概念和需要解决的问题,举例说明四大类服务器编写的代码示例,重点说明并发服务器的设计方法;第8章和第9章介绍单线程实现并发程序的设计及其应用场景;第10~12章介绍多服务、多协议服务器设计方法和原理,以及并发性管理;第13章介绍客户并发设计的原理和应用场景。

在本书的编写过程中,得到教学团队同事的大力支持和帮助,借此机会向他们表示衷心的感谢!本书由钟辉统筹全书章节内容和框架,并校对所有章节内容。第1~5章由董洁、臧晗编写,并进行了代码实验操作验证,总结实验步骤和遇到的问题;第6章和第7章由钟辉编写,孟祥宇、高野编写实例代码进行实验验证,总结实验代码所遇到的问题;第8章和第9章由宋凯、孟祥宇编写,高野进行了代码实验验证;第10~12章由钟辉、董洁编写,臧晗编写实例代码进行实验验证,并总结出现的问题。

计算机软硬件与互联技术发展迅速,限于作者的学识和时间,本书难免有错误与不妥之处,恳请读者批评指正,作者将万分感谢。

编者2018年8月于沈阳

more >

计算机tcpip网络原理与应用,清华大学出版社-图书详情-《TCP/IP网络编程原理与技术》...相关推荐

  1. 计算机常用办公软件应用书籍,清华大学出版社-图书详情-《大学计算机基础——常用办公软件》...

    我国高等院校的计算机教育分为专业教育和基础教育,基础教育的目标就是普及计算机基础知识并推广应用.众所周知,现今计算机技术的应用已经渗透到人类生产.生活.工作的各个方面,其原因就在于计算机处理数据的高速 ...

  2. 计算机位置隐私保护的书,清华大学出版社-图书详情-《隐私保护数据发布:模型与算法》...

    隐私保护数据发布: 模型与算法前言 随着数据挖掘和信息共享等数据库应用的出现与发展,如何保护隐私数据和防止敏感信息泄露成为当前面临的重大挑战.作为数据挖掘与信息共享应用中的重要环节,数据发布中的隐私保 ...

  3. python程序设计教程 清华大学出版社下载-清华大学出版社-图书详情-《Python程序设计(第3版)》...

    前言 Python由Guido van Rossum于1989年底开始设计与开发,第一个公开发行版本发行于1991年.Python推出不久就迅速得到了各行业人士的青睐,经过30年的发展,Python已 ...

  4. python程序设计 清华大学出版社 pdf下载-清华大学出版社-图书详情-《Python程序设计(第2版)》...

    Python由Guido van Rossum于1989年底开始研制,第一个公开发行版本发行于1991年.Python推出不久就迅速得到了各行业人士的青睐,经过20多年的发展,Python已经渗透到计 ...

  5. 计算机网络实验三思考题题目,清华大学出版社-图书详情-《计算机网络习题与实验指导》...

    [3]前言本书是与<计算机网络技术>(周奇等编著,清华大学出版社)配套的习题和实验指导,定位在本科教学中使用,共分为8章,每章分别与<计算机网络技术>的内容相对应.每章都由三个 ...

  6. java程序设计清华大学出版社_清华大学出版社-图书详情-《Java程序设计基础》...

    出 版 说 明 我国高等学校计算机教育近年来迅猛发展,应用所学计算机知识解决实际问题,已经成为当代大学生的必备能力. 时代的进步与社会的发展对高等学校计算机教育的质量提出了更高.更新的要求.现在,很多 ...

  7. 计算机色彩再现原理,清华大学出版社-图书详情-《计算机色彩原理及应用》

    随着计算机.互联网.移动网络等科学技术的发展及应用普及,数字化色彩信息处理技术在数字传媒领域获得了越来越广泛的应用,并且逐渐进入人们的生活领域,而由此产生的问题及所需要的应对也从以前的专业技术领域向大 ...

  8. 计算机成原理第2版,清华大学出版社-图书详情-《计算机组成原理(第2版)》...

    本书是作者在广泛参阅国内外同类优秀教材的基础上,集十余年的课程教学与实验经验精心编写而成的.本书提出的"使学生建立起在控制器控制之下的计算机整体概念,充分理解程序.指令.控制.操作之间的关系 ...

  9. 关于计算机基础介绍的书,清华大学出版社-图书详情-《大学计算机基础》

    为适应信息时代的人才需求,大学计算机基础课程已经成为高等学校基础课程的一部分,成为继高等数学及大学英语之后的又一个基础平台.另一方面,随着我国高等教育的发展,大多数高等学校的人才培养定位从传统的精英型 ...

最新文章

  1. 哥德尔90年前的「不完备性定理」,奠定了计算机与AI的理论基础
  2. 2、前端环境搭建(19.04.12)
  3. 运维基础(9)Linux性能调优三大系统
  4. 初级ABAPer考题
  5. 一次系统调用开销到底有多大?
  6. NodeJs Express 4.x 入门
  7. [PBI催化剂]国际水准,中国首款重量级PowerBIDeskTop外部工具问世
  8. mysql 数据库引擎介绍_MYSQL 数据库引擎介绍
  9. SQL 死锁分析(转贴)
  10. Asp.Net中global.asax文件的描述
  11. MVC4 下DropDownList使用方法
  12. linux系统制作win安装盘,在Ubuntu Linux下制作Windows 启动安装 USB盘
  13. udhcp源码详解(二)--转
  14. 用java写一些有趣的特效_[Java教程]用JavaScript模拟Flash效果写的炫光波动特效
  15. smartsvn 破解
  16. 怎样在html中加入计数器?(2),html如何实现计数器以及时钟的功能代码
  17. 当股份制银行核心数据遇到国产数据库
  18. MPI 之 点对点通信的一个实例
  19. 关于京东畅读卡的盈利模式猜想
  20. CAD 批量打印,输出pdf,plt的工具

热门文章

  1. HCL_H3CNE综合实验
  2. (开拓者)团队任务1:第一次团队会议
  3. 国家对应下拉列表 相应的 js特效
  4. 无功补偿的原理和形式
  5. 踩点上下班被HR约谈,网友:按时上下班,天经地义
  6. 联想小新锐7000 装win7系统图解
  7. 【Codeforces 1038D】Slime
  8. 攻防世界-看雪看雪看雪
  9. js获取当前时间,当前小时、分钟、秒,当前日期、星期数等总结
  10. 修改WSL的Ubuntu环境下ls显示的文件夹文字颜色和背景色