Windows CE中基于TCP/IP的网络通信研究

2012-10-17 03:07顾亭亭
网络安全技术与应用 2012年11期
关键词:嵌入式操作系统客户机PC机

顾亭亭

南京航空航天大学金城学院 江苏 211156

0 引言

Windows CE 是微软公司推出的一款功能强大的实时嵌入式操作系统,他可以用在手机、机顶盒、智能手持设备、网关、数字媒体设备、工业控制等多种场合。由于Windows CE采用模块化设计,开发人员可以根据系统的需要选择自己需要的模块,从而达到减小系统体积的目的,已经越来越多地被开发厂商支持及使用,迅速成为嵌入式操作系统主流平台之一。Windows CE 操作系统有着优越的网络性能,是最早在其内核中加入TCP/IP协议的嵌入式实时操作系统之一。随着网络的发展和嵌入式设备的普及,本文讨论了在Windows CE下实现网络通信的关键技术和设计方法。

1 网络终端简介

在 Windows CE 产品开发前,需要进行系统的定制。Platform Builder 是微软提供给 Windows CE 开发人员进行基于Windows CE 平台下嵌入式操作系统定制的集成开发环境。它包括了基本的文件编辑能力、多目标编译调试工具包、特性编辑器、软件开发工具包(Software Development Kit,SDK)导出工具、向导工具以及用于做测试、性能分析等工作的多个工具包,从而能够更加方便快捷地配置、构造和调试系统。Platform Builder 的强大功能,已使其成为Windows CE平台下嵌入式操作系统开发和定制的必备工具。

对系统的定制要掌握一个原则,就是在功能保证完备的情况下,尽可能地减小内核的尺寸,以节省资源。由于Windows CE 操作系统采用模块化结构设计,所以在定制操作系统时只需根据设计需要添加相应的模块。定制平台前要导入硬件平台的BSP(板级支持包),BSP 里包含了硬件平台的驱动和操作系统所需要的应用软件,本系统采用的是微软公司提供的针对该处理器的BSP样本。此外,定制操作系统还要依据不同的处理器选择相应的ARM版本。

2 网络通信系统的软件设计

2.1 Windows CE中的网络通信

Windows CE 6.0在网络通信方面提供了完善的软件支持,包括:

(1) 提供与Unix完全兼容的Socket API函数,使其他平台的网络应用程序很容易移植到 Windows CE中,而Windows CE中的应用程序也容易移植到其他平台中;

(2) 操作系统本身也包含大量各种网络协议,如TCP/IP、UDP、ICMP等;

(3) 操作系统本身提供各种网络服务,如IIS、TFTP;

(4) 提供小端口网卡驱动程序接口,只需编写网卡的小端口驱动程序就能利用该网卡实现上面提供的各种网络协议及网络服务;

(5) 以上各层软件的关系如图1所示。

图1 Windows CE网络通信体系结构

2.2 面向连接的TCP 通信

TCP通信是一种面向连接的、可靠的、基于字节流的传输层通信协议。具有五大特点:①面向连接的传输;②端到端的通信;③高可靠性;④全双工方式传输;⑤采用字节流方式。

TCP通信是指在进行通信之前,通信双方必须建立连接,通信结束之后终止其连接。也就是指当两台计算机上的两个应用程序之间利用TCP进行通信时,源和目标之间会建立一个虚拟连接,这个连接一旦建立,两台计算机之间就可以把数据当作一个双向字节流进行交换。

TCP建立的连接是端到端的连接,即源与目标之间的连接。TCP协议向应用层提供了面向连接的服务,以确保网络上所传送的数据包被完整、正确、可靠的接收。一旦数据有损伤或丢失,则由TCP负责重传,应用层不参与解决。

本文在Windows CE中实现一个TCP客户端应用程序,向PC机端的TCP服务器请求连接,连接成功后,客户端应用程序就可以与PC端的TCP服务端应用程序进行TCP通信了,连接的流程图如图2所示。在网络应用中,网络通信一般可通过Socket实现。Socket编程均采用客户机/ 服务器模式。

图2 连接流程图

2.3 软件系统设计

由于在Windows CE下的TCP/IP协议处理方法是分别在服务器端和客户机端创建Socket程序,建立通信联系的,下面就分别给出服务器端Socket和客户机端 Socket的实现方法。调用的主要函数有:创建套接字函数 socket、监听函数listen、等待连接函数accept、数据接收函数read、数据发送函数write 等。

2.3.1 服务器端socket操作

(1) 建立套接字函数socket;

(2) 绑定地址和端口函数bind,将该socket与本机地址和端口号捆绑;

(3) 建立套接口队列函数listen,在监听端口上监听客户机的连接请求;

(4) 接收连接函数 accept,当 accept捕捉到一个连接请求时,就建立连接线路并返回一个新的通信文件描述符;

(5) 处理连接函数read/write;

(6) 关闭套接口close。

服务器端利用Visual C++编写可运行于PC机上的TCP通信应用程序。该程序调用Windows平台提供的Socket API函数,使用TCP协议。服务器端首先创建一个socket,等待与客户机端的连接,连接成功后进行数据的传送。

2.3.2 客户机端socket操作

(1) 创建客户端的Socket

客户端应用程序首先调用WSAStartup函数来与Winsock的动态连接库建立关系,然后调用 socket来建立一个 TCP socket。socket 函数第一个参数只能是 AF_INET,socket函数的第二个参数设置位SOCK_STREAM,其第三个参数指定为0。

(2) 向服务器提出连接申请

对客户端来说,它不需要绑定,可以直接连接服务器端。调用 connect函数来提出与服务器端建立连接的申请,首先定义一个地址结构体变量,并对其成员进行赋值,设定服务器端的IP地址和端口。

(3) 和服务器端进行通信

当建立连接后,就可以调用send函数向服务器端发送数据了,之后调用recv函数接收服务器发送的数据。

(4) 关闭套接字

当完成通信后,调用closesocket函数关闭套接字,释放为此套接字分配的资源。最后调用WSACleanup函数,终止对套接字库的使用。

客户端利用 Visual Studio 2005编写一个可运行于Windows CE 6.0操作系统上的应用程序,该程序调用Windows CE平台提供的Socket API函数,使用TCP协议,通过以太网芯片驱动。

3 系统测试

用网线连接PC机与网络终端,在网络终端中的以太网芯片设置Windows CE的IP地址,确保通过PC可以Ping通网络终端。在PC机上运行TCP测试工具软件,设置本机端口号为1011,然后点击“Connection”按钮,启动一个TCP服务。在Windows CE中,点击Embedded_TCP.exe,在跳出的对话框中填写要连接的服务端地址(即 PC机地址,为192.168.2.22)和端口号(为1011),然后单击“connect”按钮,创建成功,按钮会变成不可用,否则会报错。这时,TCP测试工具软件中监听到一个客户端连接,就可以与客户端进行网络通信了,如图3所示。

图3 通信软件测试

4 结语

本文根据Windows CE操作系统的特点和TCP协议,利用Socket套接字编程,设计了在Windows CE下的网络通信软件,并在网络终端中运行成功。软件可实现嵌入式网络终端和PC 机之间的通信功能,具有较大的灵活性和扩展性。在此基础上可开发文本传输、通信故障检测等应用软件。

[1]邓成中,黄惟公,万松峰.基于嵌入式 ARM&WinCE的小型监控系统的设计[J].微计算机信息.2005.

[2]吴弋旻,葛海江,张能贵.基于 WinCE 的模拟键盘驱动程序的实现[J].机电工程.2008.

[3]林建民.嵌入式操作系统技术发展趋势[J].计算机工程.2001.

[4]YAGBMOUR K.构建嵌入式Linux[M].韩存兵,龚波,译.北京:中国电力出版社.2004.

[5]何宗键. Windows CE 嵌入式系统[M].北京:北京航空航天大学出版社.2006.

[6]谢希仁.计算机网络[M].大连:大连理工大学出版社.2004.

[7]李巧玲.基于C#-Socket的网络通信程序设计[J].福建电脑.2009.

猜你喜欢
嵌入式操作系统客户机PC机
计算机嵌入式操作系统分析
基于三菱FXPLC的感应淬火机床与PC机的串行通信实现
VC.NET下实现dsPIC单片机与PC机的通信
排除OLT设备登录故障
关于高校嵌入式操作系统课程教学的探索与思考
基于嵌入式操作系统的工业采集板设计
应用服务型人才培养体系下的嵌入式操作系统教学改革探索
VIVID3彩色超声仪结构原理及维修
瘦客户机:安全与便捷的选择
升腾瘦客户机借神码翱翔“云端”