糖儿飞教你学C++ Socket网络编程——1.为什么要学Socket编程

TCP/IP 网络编程(俗称Socket编程),是针对TCP/IP层协议(如TCP、UDP)进行的网络编程。这是一种最传统的网络编程方式,许多互联网早期诞生的网络软件,如QQ、Foxmail都是依赖于Socket编程技术开发出来的。

相对于基于应用层协议(如HTTP)的Web编程来说,TCP/IP 网络编程由于是在更底层协议上进行编程,必须编程实现创建套接字、监听、建立连接等前期步骤后才能进行网络通信,而Web编程却能依靠HTTP协议直接收发数据,因此,TCP/IP 编程的入门难度明显比Web编程要大得多。同时,TCP/IP 网络编程主要用于开发C/S结构或P2P结构的软件,这类软件需要开发Windows界面,很多时候还会涉及到多线程编程,以及线程之间参数的传递,因此,TCP/IP 网络程序通常是网络通信的代码与Windows界面代码及多线程处理的代码混杂在一起,这无疑也增加了这种网络编程的学习难度。

TCP/IP 网络编程相对于当今的Web编程来说虽然属于冷门,但其实际应用领域还是很多的,并且有些应用具有不可替代性(比如工控软件,物联网通信软件等)。随着物联网技术的普及,TCP/IP 网络编程必将再次变得重要起来。以慕课网(www.imooc.com)为例,关于Socket技术的相关课程多达9门,并且指出“掌握了Socket技术,就等于掌握了推送、IM、物联网等领域的命脉”,“学习本课程后物联网相关通信工作不再是难题,且你有能力成为物联网协议的制定者”。这足以说明学习TCP/IP 网络编程大有可为。

目前市场上有很多网络编程的教材,其定位大都是基于学习者已经很好地掌握了VC/MFC编程。但实际情况是,很多学生只有C语言和面向对象编程的基础知识,几乎还不具备任何Windows程序开发的知识和经验,程序编写能力不足,本书正是为了帮助这类读者快速掌握Socket编程技术而编写的。在内容编排时,注重解决以下几方面的问题。

(1)分散难点,由浅入深,问题驱动。比如:在程序类型上,按照“控制台程序→Windows API程序→MFC程序”的步骤组织案例,在开发技术上,按照“TCP一对一同步通信→TCP异步通信→TCP一对多通信→Select模型一对多通信→完成端口模型”。这样,就将Socket编程的难点“WinSock五种I/O模型”分散到了不同的章节实例中讲解。

(2)本书大部分案例程序都是Windows界面程序,这样有利于提高学生的学习兴趣,并且能让学生掌握如何将控制台程序转换成Windows界面程序,这是很有实用价值的。

(3)考虑到很多同学VC编程基础不好,在介绍网络程序之前,先介绍一些预备程序的编写。Socket编程的另一个难点是很多程序都不可避免地涉及到多线程,本书将多线程编程也分散安排在后面几章的几个实例中讲解。

(4)摒弃了用WinSock编程制作浏览器、FTP客户端和电子邮件客户端等内容,因为这些软件已经有很多现成的,完全不需要自己去开发,已没有多少实用价值,且不能让学生产生学习兴趣。而是安排了群聊软件、网络用户登录系统、在线考试系统等实用价值很大且有趣味性的案例。

虽然目前TCP/IP 网络编程的语言有C++、Java、Python等,但Java、Python等语言都对网络编程的核心WinSock函数进行了封装,而C++的Win32 API可直接使用WinSock函数进行编程,这样更有利于学生理解Socket编程的底层实现细节,是纯正的Socket编程,学生学会后,不需要多少修改,就能适应Linux、Unix等环境的网络编程,且C++语言效率更高,适合物联网、工控软件的开发。基于此,本书采用C++语言作为网络编程的实现语言,同时为了帮助读者融会贯通,本书在附录中介绍了使用Python和Java制作基本的TCP通信程序。

你可能感兴趣的:(糖儿飞教你学C++ Socket网络编程——1.为什么要学Socket编程)