第2版前言 本书是作者基于多年的计算机网络教学实践与科研项目开发而编写的。本书作者先后为企业开发完成了基于Windows环境的电话语音网络系统、纯软件型多媒体网络教学系统、网站安全防护系统和网络测量、矿山排土场灾害实时监测预警平台、基于MQTT协议的固废排放实时监测系统等软件。同时,重点研究信息隐藏和网络测量技术,并成功应用于IP电话的隐秘通信、网页信息隐藏和网页防篡改、网站安全运行监测等领域。这些工作为本书的编写积累了大量的技术资源。同时,作者将这些科研成果转化为学科专业的网络编程教学,不断吸收网络新技术,极大地丰富了教学内容。 本书第1版荣获2014年全国高等学校计算机教育研究会立项并获得结题优秀奖。几年来,该书得到了许多高校的积极选用,有些高校教师还主动联系作者,就网络编程技术和教学困惑多次进行交流探讨。同时,针对网络教学内容更新和改革需要,作者对部分章节进行补充并完善教材内容。 在第2版中,保持不变的有第3、4、5、8、9、10、11章,原第13、14章调整为第12、13章,内容不变。合并第6和7章,删除第12章,新增第6章。此外,还修订了第1版的错误,并更新了参考文献。主要修订工作如下: (1) 第1章:简化TCP/IP协议介绍内容,删除内容“1.1.1 TCP/IP的起源”;增加内容“1.3.5 Windows API函数调用”,为后续各章的调用提供参考方法。 (2) 第2章和第12章合并为第2章:12.1和12.2节内容偏于基础性,全部删除。将12.3节内容移入第2章,作为2.5节,成为“2.5网站可达性测量程序设计”。 (3) 新增第6章:网络抓包程序设计。在网络协议分析方面,一般采用Wireshark等抓包工具进行离线分析。如果需要定制开发,或者将协议包采集、存储和分析等环节集成,开展大规模实时系统研发,则更需要自行设计抓包程序。 (4) 合并修改原第6、7章为“第7章 木马程序设计”,体现木马技术的完整性。其中,7.3远程屏幕监视技术为原6.1节、6.2节和6.3节内容,分别调整为7.3.1节、7.3.2节和7.3.3节。当然,屏幕监控本身仍然是个独立技术,在正常的远程控制工具中一直发挥着重要作用。 本书第2版继续保留原有的特色及创新,主要表现在:  技术性和编程方法的结合。学生在编程的同时,能够通过设计思路、设计流程等开拓思维,既基于编程又不限于编程。  实用性和趣味性融于一体。以网络开发项目为主题,比如主机扫描、网络游戏开发、网络抓包、手机短信编程、木马技术、屏幕监视、视频监控等项目,容易使学生产生浓厚的兴趣。  系统性和层次性紧密结合。从主机扫描、常规通信到安全通信,具有系统性,在设计内容、设计难度和综合性方面具有层次性,适合于不同深度的需求。  适合教学需要。全部实例都可以调试和运行;具有完整的多媒体课件和源代码;每章后面还设计了实验项目,便于读者开展课程设计、综合实验和毕业设计所用。  体现科研成果。网络信息隐藏通信章节是作者近年来的研究成果内容,而网络抓包、木马技术、语音通信、网络视频传输、屏幕监控、串口通信等内容,则是作者的科技项目转化内容。 本书以能力目标为指引,以项目主题方式组织全文,每个主题形成单独一章,既相互支持,又保持一定的独立性。每章都给出了主要内容,包括基本原理、开发方法、技术流程、界面设计、编程要点和代码分析,还给出了课堂练习思考内容和实验项目。 与本书配套的还有课件PPT资料和源代码。在实现代码方面,采用C#编程语言,目前应安装使用Visual Studio 2015.NET及其以上版本开展教学。建议授课学时为40时左右或2周,将授课和学生操练结合在一起,并在线完成书中的一些课堂练习。针对实验项目,可以按小组方式进行分配或改造,激发学生的编程思路和团队合作精神。 本书主要供具有一定C语言和网络基础的本科生使用,面向计算机科学与技术、信息安全、软件工程、通信工程、网络工程、信息与计算科学等专业,可以作为计算机网络编程、网络课程设计、网络安全编程、专业实习等课程的教材或参考书。还可以供研究生的网络实践课程使用。 本书是全国高等学校计算机教育研究会2014年立项项目成果,得到了清华大学出版社的资助和辛勤付出,在此谨表衷心感谢。 由于网络编程技术发展迅速,加之作者水平有限和时间仓促,书中不妥之处在所难免,敬请广大读者不吝赐教。 作者2021年10月于北京