文档详情

操作系统的CS模式网络编程.doc

发布:2017-06-07约3.88千字共6页下载文档
文本预览下载声明
基于VxWorks嵌人式操作系统的C/S模式网络编程 1 嵌入式操作系统VxWorks简介  VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的用户开发环境,使其在嵌入式实时操作系统领域占据一席之地。他以良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。  2 VxWorks的特点  2.1 可靠性  稳定、可靠是VxWorks的一个突出优点,因而他得到了越来越多的用户的认可。  2.2 实时性  实时性是指能够在限定时间内执行完规定的功能并对外部的异步事件做出响应的能力。实时性的强弱是以完成规定功能和做出响应时间的长短来衡量的。    VxWorks有很强的实时性,其系统本身的开销很小,进程调度、进程间通信、中断处理等系统公用程序精练而有效,他们造成的延迟很短。VxWorks提供的多任务机制中对任务的控制采用了优先级抢占(Preemptive Priority Scheduling)和轮转调度(Round-Robin Scheduling)机制,也充分保证了可靠的实时性,使同样的硬件配置能满足更强的实时性要求,为应用的开发留下更大的余地。  2.3 可裁减性  VxWorks由一个体积很小的内核及一些可以根据需要进行定制的系统模块组成。VxWorks内核最小为8kB,即便加上其他必要模块,所占用的空间也很小,且不失其实时、多任务的系统特征。由于他的高度灵活性,用户可以很容易地对这一操作系统进行定制或做适当开发,来满足自己的实际应用需要。  3 C/S模式网络编程  网络是VxWorks系统之间以及与其他系统联系的主要途径。在VxWorks网络结构的最底层,通常使用以太网作为传输媒介;而在传输媒介的上一层,则使用TCP/IP和UDP/IP协议。  VxWorks网络编程中最常见的是C/S模式,在该模式下,服务器端有一个任务(或多个任务)在指定的端口等待客户来连接,服务程序等待客户的连接信息,一旦连接上之后,就可以按照设计的数据交换方法和格式进行数据的传输;而客户端则在需要的时候发出向服务端的连接请求。客户端与服务器端的关系如图1 所示。    3.1 C/S模式网络编程原理 网络通信的基石是套接字,一个套接字是通信的一端。VxWorks为用户提供了2种套接字,即流套接字和数据报套接字。流式套接字定义了一种可靠的面向连接的服务,实现了无差错无重复的顺序数据传输。数据报套接字定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证可靠,无差错。 五连接的服务一般都是面向事务处理的,一个请求一个应答就完成了客户端与服务端之间的信息交互。无连接的套接字C/S模式程序的流程如图2所示。  面向连接的服务比无连接的服务处理起来要复杂。面向连接的套接字C/S模式程序的流程如图3所示。    套接字工作过程如下:服务器首先启动,通过调用socket()建立一个套接口,然后调用bind()将该套接口和本地网络地址联系在一起,再调用 listen()使套接口做好侦听的准备,并规定他的请求队列的长度,之后就调用accept()来接收连接。客户在建立套接口后就可调用connect ()和服务器建立连接。连接一旦建立,客户机和服务器之间就可以通过调用recv()/recvfrom()和send()/sendto()来发送和接收数据。最后,待数据传送结束后,双方调用close()关闭套接口。 3.2 编程实例 下面给出一个面向连接的点对点实时通信的工程应用的实例。该实例应用于作者所在的网络测试分析仪项目中。他由两部分组成,服务器在VxWorks操作系统下运行,客户机在Windows下运行。 3.2.1 服务端的程序设计 服务端的程序设计在结构上可以使用两种基本模式:循环模式和并发模式。 循环模式 服务端进程在总体上是一个循环,一次处理一个请求。在有很多客户端请求时,请求放人队列,依次等待处理。如果某个请求的处理时间过长,就会导致队列满而不能接受新的请求。 并发模式 服务端进程可以同时处理多个请求,结构上一般采用父进程接受请求,然后调用fork产生子进程,由于进程处理请求。该模式的优点是可以同时处理多个请求,客户端等待时间短。 由于是面向连接的点对点通信,所以实例中采用了循环模式。 (1)建立自己的套接口 sHost=socket(AF_INET,SOCK_STREAM,0) 该函数建立指定通信域、数据类型和协议下的套接口,通信域为AF_INET(惟一支持的格式),数据类型SOCK-STREAM表示建立流式套
显示全部
相似文档