糖儿飞教你学C++ Socket网络编程——3.网络程序的类型与应用领域

1.1.1 网络程序的类型

早期的应用程序都是运行在单机上的,称为桌面应用程序。后来由于网络的普及,出现了运行在网络上的应用程序(网络软件)。总的来看,网络应用程序有C/S、B/S和P2P三种体系结构。

1. C/S体系结构

C/S是Client/Server的缩写,即客户机/服务器结构,这种结构的软件包括客户端程序和服务器端程序两部分。就像我们常用的QQ或MSN等网络软件,需要下载并安装专用的客户端软件(图1-1),并且服务器端也需要特定的软件支持才能运行。

C/S模式最大的缺点是不易于部署,因为每台客户端电脑都要安装客户端软件。而且,如果客户端软件需要升级,则必须为每台客户端单独升级。另外,客户端软件通常对客户机的操作系统也有要求,如有些客户端软件只能运行在Windows平台下。

2. B/S体系结构

B/S是Browser/Server的缩写,即浏览器/服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,客户端软件由浏览器来代替(图1-2),一部分事务逻辑在浏览器端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,目前流行的是三层B/S结构(即表现层、事务逻辑层和数据处理层)。

 

图1-1 C/S结构的QQ客户端界面                    图1-2 B/S结构的浏览器端界面

B/S结构很好地解决了C/S结构的上述缺点。因为每台客户端电脑都自带有浏览器,就不需要额外安装客户端软件了,也就不存在客户端软件升级的问题了。另外,由于任何操作系统一般都带有浏览器,因此B/S结构对客户端的操作系统也没有要求了。

但是B/S结构与C/S结构相比,也有其自身的缺点,首先因为B/S结构的客户端软件界面就是网页,因此操作界面不可能做得很复杂,漂亮。比如很难实现树型菜单、选项卡式面板或右键快捷菜单等(或者虽然能够模拟实现,但是响应速度比C/S中的客户端软件要慢很多),其次,B/S结构下的每次操作一般都要刷新网页,响应速度明显不如C/S结构。再次,在网页操作界面下,操作大多以鼠标方式为主,无法定义快捷键,也就无法满足快速操作的需求。

3. P2P体系结构

P2P是Peer-to-Peer的缩写,在英文中,Peer有“同等者”、“伙伴”的意思,P2P即点对点结构(或称对等式网络结构)。这种结构的特点是:网络中的主机没有客户端和服务器端之分,每台主机既作为服务器又作为客户端。P2P结构的一个典型应用是BT下载,在BT下载中,每台主机既作为客户端从其他主机下载资源,又作为服务器端提供资源供其他主机下载。由于每台主机都能同时从很多台其他主机下载资源,因此下载速度更快。

P2P的另一个应用是网络视频会议系统,网络视频的每一方都接收其他各方的视频,同时也发送视频给其他各方。因此,P2P在网络音视频传输领域也有广泛的应用,比如互联网电话Skype。

P2P网络的一个重要目标就是让所有的接入端都能提供资源,包括带宽,存储空间和计算能力。因此,当有新节点加入且对系统请求增多时,整个系统的容量也增大。这对于只有一个固定服务器的C/S结构是不能实现的,因为在C/S结构中,客户端的增加意味着所有用户更慢的数据传输,而P2P网络的分布特性通过在多节点上复制数据,既增加了数据传输速率,也增加了防故障的健壮性。并且在纯P2P网络中,节点不需要依靠一个中心索引服务器来发现数据。在后一种情况下,系统也不会出现单点崩溃。P2P的缺点在于:用在大规模网络上时资源分享紊乱,管理较难,安全性较低。

4. 其他网络软件

还有一些网络软件只有客户端或服务器端的一方。比如电子邮件客户端就是一个单独的客户端软件,它需要连接其他公用的邮件服务器才能收发邮件。而Web服务器软件(如Apache、IIS)则是一种单独的服务器端软件,它们提供服务供客户端访问(此时是浏览器充当客户端)。

本书主要讨论C/S结构网络软件的设计实现,C/S软件的编程是在传输层上进行网络编程,因此又叫TCP/IP网络编程。而B/S编程是基于HTTP协议的网络程序,俗称为Web编程,由于Web编程是基于应用层协议的网络通信,只需要考虑网络数据的接收和发送,而不需要考虑侦听、建立连接等步骤,因此Web编程的实现原理比TCP/IP网络编程的原理简单得多,本书不讨论Web编程。

1.1.2 网络程序的应用领域

C/S结构的程序大量应用于工业控制软件,如监控系统、医疗软件、超市POS软件、木马程序等。而B/S结构的软件主要用于开发各种管理信息系统(包括网站)。

总的来说,如果只是希望开发一个信息系统,供远程用户进行信息查询或信息修改,则推荐使用B/S结构来实现,这可降低开发和部署的难度。但B/S结构的缺点在于,由于它的客户端就是浏览器,因此服务器端只能对浏览器进行操控,而无法控制到客户端的操作系统。

而C/S结构的客户端是独立的应用程序,使得服务器端和客户端之间不仅具有信息传递功能,更重要的是任何一方都可以向对方发送控制指令,从而能够远程控制对方的操作系统来执行各种各样的操作(比如关机、禁止切换程序、记录键盘输入等),这是B/S结构的软件根本无法实现的。因此如果希望开发具有远程控制功能的系统,则只能使用C/S结构的程序。C/S结构软件的第二个特点是服务器端能够主动发送数据给客户端,而B/S结构中,服务器端是被动的,总是先由浏览器发出请求,服务器端再作出响应。

下面列举C/S结构软件的三种典型应用。

1. 工业控制软件

在很多行业,比如钢铁、化工、电力等企业中,都需要通过工业控制软件来远程控制各种机器设备的运行,员工坐在办公室内,轻点鼠标就能控制和监控车间内各种设备的运行。对于这种软件来说,被控端(机器设备)和主控端之间通过网络相连,两者之间要传输控制命令和监控数据都需要网络编程来实现。图1-3是一个工业控制软件的主控端界面。

大部分工业控制软件都是使用C++编写的。而很少采用Java等其他编程语言。其主要原因是大部分工控软件运行于裸机、UCOS、UCLinux和WinCE中,这些平台比较简单,没有JVM,而Java程序的运行需要JVM。所以Java不能运行于上述平台。

工业控制软件大多采用组态软件的形式开发,而通信模块作为组态运行环境中数据交互的重要渠道,通常处于监控组态软件运行环境的核心区。

图1-3 一个工业控制软件的主控端

2. 物联网通信软件

物联网(internet of things, IOT)就是物物相连的互联网,物联网要求设备与设备之间,具有双向的通信能力,这是B/S结构所无法实现的,因此,物联网通信一般采用基于TCP/IP的C/S模式。

举例来说,图1-4是一种公用的汽车全景影像服务系统,与普通的全景影像系统不同,该系统不需要在汽车上安装摄像头,而是通过连接附近公共场所中的摄像头,控制这些公共摄像头拍摄影像并回传到汽车中。

显然,这是一种典型的物联网应用,其关键技术是:位于汽车内的主控端要和附近的摄像头进行网络通信,这需要制定一种协议,包括汽车端和摄像头之间如何通过发送特定格式的数据包建立连接,主控端控制命令的格式,摄像头端传输的影像信息的数据包格式等。

图1-4 一种公用的汽车全景影像服务系统

3. 计算机等级考试系统

计算机等级考试系统是一种典型的C/S结构软件,它由一个服务器端连接很多个考试客户端。服务器端能发送考试试题给客户端,客户端交卷时把做好的各个文件打包发送给服务器。显然,服务器端和客户端之间需要能够双向通信。此外,服务器端还要能够禁止客户端在做选择题时进行程序切换。这需要服务器能够控制客户端的操作系统,因此是无法使用B/S结构实现的。

需要说明的是,工业控制软件和物联网通信软件除了可使用Socket编程实现以外,还可使用其他一些网络通信协议来编程实现,如WinPcap、Libcoap、MQTT等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值