张爱科
(柳州职业技术学院,广西 柳州 545006)
网络编程实验对实验环境要求比较高,传统的网络编程都是直接让用户在不同的程序开发环境中进行实验开发。但是由于网络编程应用的开发往往需要大量的基础代码的实现,使得用户在开发网络程序应用的时候,需要花费大量的时间和精力在设计和完成与网络接口关系并不密切的程序代码上,从而提高了网络编程的实验门槛。从目前的研究成果来看,当前对网络编程实验环境的研究更多的是对一些基础环境的建设,而对如何降低网络编程实验门槛,更好地辅助实验者进行网络编程实验所开展的工作并不多。因此本文针对这一现状提出的基于计算面向 TCP/IP协议的网络编程实验平台,通过对实验过程的研究和分析,设计真正有助于辅助实验者进行网络编程实验的相关功能模块,降低网络编程实验的开发难度[1-2]。
网络编程实验平台的设计目标是为实验者提供网络编程开发调试的实验环境,降低实验者进行网络编程开发实验的难度,尽可能有效地辅助实验者更为容易开展网络编程实验。网络编程实验开发平台的设计原理,是通过一个后端程序运行平台为实验者进行网络编程实验,搭建程序编写的主体框架,根据实验者的实验内容和实验目的,在整个实验框架中空出部分程序代码,以函数接口的形式由实验者完成特定的实验代码。在实验过程中,要求实验者完成的部分函数接口清晰,变量定义明确,函数功能描述准确,实验者根据实验平台所要求完成的部分函数的编程,进行网络编程开发。实验者完成特定函数的编写之后,网络编程实验平台能够将系统预先产生的网络编程相关代码与实验者提交的函数模块合为一体,进行程序的编译,而且在网络实验平台中能够对程序的运行过程进行单步跟踪调试。根据调试的需求不一样,可以提供基于指令的单步和基于函数过程的单步调试形式,也可以为实验者提供灵活多样的断点管理[3-4]。同时,实验者使用该实验平台进行单步调试的过程中,能够将程序运行过程中的相关变量以及程序运行时内存的相关信息进行输出,给用户提供一个与真实的网络编程调试环境完全一致的实验环境。根据网络编程实验平台的设计原理,网络编程实验平台在设计过程中,主要解决了问题有:网络编程总体程序框架的自动生成、基本函数的定义以及函数之间的变量传递,除此之外还需要实现网络编程程序的调试分析环境。本文将针对网络编程实验平台实现过程中所涉及的这些问题,分别予以分析和实现。
根据本文设计的网络编程实验平台设计原理,本文设计的网络编程实验平台的组成结构如图1所示。整个网络编程实验平台分为前端和后端两个部分。后端是网络编程实验平台实现的基础,其主要是根据前端所选择的网络编程实验内容和实验目的,自动地产生网络编程实验程序。网络编程实验平台后端产生完整的一个网络编程实验的程序之后,根据程序的组成框架以及实验者的实验目的,对该程序框架中的某些关键的程序模块进行删减,而只对实验者提供这些程序模块的函数名称、函数接口以及函数功能的描述。之后,网络编程实验平台的后端将产生的程序主体结构以及空缺的函数名称及函数接口描述,同时发布给网络编程前端。网络编程的前端通过接收后端传递过来的网络编程代码,将在一个虚拟的程序调试环境中完成网络编程开发实验,实验者在该环境下所看到的网络编程界面与在传统的编程环境中看到的界面是完全一致的。本文在设计过程中,通过将Visual C++编程内核,完整地移植到本文设计的实验平台中,使得用户在该实验平台的操作环境,完全继承了 Visual C++的编程应用环境[5]。
图1 网络编程实验平台设计原理
从图2以看出,在网络编程前端中主要会包括标准的库函数、程序开发接口、程序调试模块以及用户实验操作界面以及用户程序评价模块。在所有这些功能模块中,程序开发接口和调试环境是网络编程实验平台前端的核心模块。其中调试环境通过继承Visual C++的内核进行实现,能够为用户提供单步跟踪的调试功能,基于过程的单步调试功能以及程序断点设置功能。在程序运行过程中应用Visual C++内核所提供的程序运行过程中变量输出等功能,能够实现对网络编程实验中涉及到的局部变量和全局变量进行观测。该模块主要是为辅助用户进行网络编程开发所提供的辅助性功能,通过这两个模块能够让用户更加清晰地看到整个编程实验中,程序的总体框架以及程序所包含的所有函数,通过函数之间的调用关系又可以清晰地看到函数与函数之间的逻辑关系,以及所有的函数是如何通过相互之间的参数传递有机地组合在一起,完成特定的程序功能。网络编程实验平台中的程序组成框架示意图是通过对网络编程程序中的源码进行动态的扫描,实时检测当前运行的实验程序总体结构,对当前实验程序中的所有函数进行监测,形成当前正在编程开发的实验程序组成结构。而函数之间的依赖关系则是通过扫描程序内函数之间的调用关系以及跟踪参数的传递过程所形成的函数之间调用关系图。通过这两个模块的实现,能够有力地辅助用户开发相应的网络程序,降低网络编程的难度。
图 2 网络编程实验平台组成结构
网络编程实验平台后端的开发与设计是整个平台实现的重要基础。由于网络编程实验平台的后端负责程序总体框架的自动产生,因此对后端的开发与设计是整个实验平台开发的关键之处。本文在设计网络编程实验平台后端过程中主要分以下三个子模块进行开发和实现[6-7]。
网络编程实验的目的是为了让实验者进行网络编程实验。传统的实验过程是实验者根据其实验目的和实验内容从零开始,完全由实验者去搭建整个程序的框架,最终实现特定的网络编程功能。在传统的网络编程实验过程中,由于每个网络应用程序都需要大量的基础功能的代码来实现,因此实验者为了实现某一特定的功能,不得不开发大量的相关的基础源码,使得开发的进度非常慢,而且大幅度提高了网络编程实验的难度。根据本文设计的网络编程实验平台的设计原理,在实验过程中,将由系统自动去产生网络编程应用的基础代码,而只由实验者完成关键部分的少量代码的开发与实现。本文在设计过程中,设计的如图3示的网络应用程序框架自动产生流程。首先根据用户选取的网络编程实验功能,自动地产生与该实验功能相对应的程序抽象功能描述,然后根据程序抽象功能描述,在网络编程实验数据库中提取相应的程序流程和程序框架,而程序流程在提取过程中又自动地在基本的函数库中提取相应的函数体,拼接形成目标程序框架,最终将所形成的程序框架进行输出。整个程序框架的自动产生过程中,标准的程序数据库是实现的关键,一般通过预先设置的方式存储于程序数据库中[8]。
图3 网络编程实验平台程序产生过程
从本文设计的网络编程主体程序框架自动产生流程可以看出,所有的程序自动产生之后,都需要通过调用基本的函数来实现,而对于网络编程实验过程中,哪些函数可以作为基本函数,是可以通过预先对实验内容进行分析,以及结合长期的网络编实验程经验予以确定。本文在设计过程中建立了类似于树形的基本函数关系结构,即处于最底层的是最基本的函数体,完成功能最为单一的原子操作,而在基本的函数体的上一层,可以定义粒度更高一级的基本函数体。所有基本函数的定义,在系统的设计初期,由设计者予以完成。而且在后期的运行过程中,基本函数的定义还可以由用户自行添加。用户所添加的基本函数粒度,既可以是处于最底层的原子操作的基本函数,也可以是对现有的多个基本函数以及用户所定义的一些自定义基本函数有机组合之后形成的新的基本函数。
通过后端产生的程序框架以及调用了相关基本函数之后,函数与函数之间,必须通过统一的变量和变量的描述形式进行数据的传递,本文在设计的网络编程实验后端系统中,对所有函数之间的变量定义、变量描述以及函数之间的变量参数传递,都进行了统一的约定,使得函数之间能够进行平滑的数据传递,只有将函数之间的所有参数传递和变量赋值问题进行了统一规范化的定义与处理之后,才能确保所有的函数之间能够有机地组合在一起,从而保证通过后端系统自动产生的程序框架,能够可靠地交给前端实验平台进行应用,并且确保用户所开发的实验程序能够结合后端自动产生的程序框架有机地结合在一起,并实现特定的网络编程功能。
网络编程实验一直缺乏有效的实验平台,使得网络编程在实验过程中一直缺乏很好的辅助工具,网络编程的实验效果也难以得到有效的保障,本文设计的网络编程实验平台通过简化网络编程中的程序代码,使得实验者能够将更多的精力集中到特定的功能代码开发上去。而且实验平台所提供的相关辅助开发模块能够更有效地辅助用户进行网络编程的实验,具有良好的应用价值。
[1] 杨华,杨松岸,黄修超.以TMS320C6205为核心的MPEG-4编码器的设计与实现[J].通信技术,2003(11):1-2,5.
[2] 刘群,李坚.计算机网络实验教学体系的构建[J].实验科学与技术,2010,8(01):97-99.
[3] 张绪玉.基于Virtual PC构建单机网络环境[J].重庆工学院学报:自然科学版,2008,22(09):154-157.
[4] 万润泽,张昊.虚拟机 VMware在网络实用技术实验教学中的研究[J].湖北第二师范学院学报,2010,27 (08):133-135.
[5] 文军,王加懂.DSP程序在线编程的研究与实现[J].信息安全与通信保密,2007(08):192-195,198.
[6] 易克非,胡庆锋.基于 DSP的实时多任务调度内核设计[J].通信技术,2011,44(06):135-137.
[7] 董辉,马建.基于虚拟蜜网的网络攻防实验平台的构建[J].齐齐哈尔大学学报:自然科学版,2012,28 (02):67-72.
[8] 汪渊,杨姜沫岐,陈月云.基于 DSP构建综合仿真平台的OFDM系统实现[J].信息安全与通信保密,2006(03):86-88.