基于项目的嵌入式Linux C开发课程实施*

2018-01-24 20:24章晓敏陈浩松
山西青年 2018年22期
关键词:服务器端进程客户端

章晓敏 陈浩松

(宁波大红鹰学院,浙江 宁波 315175)

一、课程项目与课程各单元之间的关系

“Linux网络传输系统”是本课程的课程项目,通过项目导学,指引学生了解要开发该项目,必须掌握Linux基本命令、shell编程、Linux下文件I/O操作、进程控制、进程通信、线程、网络编程等相关知识,同时,还必须熟悉一些常用的算法,理解简单的编程思想。为了便于理解和掌握Linux C程序设计知识,将项目所需的全部知识按照循序渐进的学习规律,划分为6个不同的阶段。每一阶段辅以单元项目进行训练,将知识转化为解决问题的技能,为综合项目的完成打下坚实的基础[1-2]。

在第 1 阶段,通过项目“SSH终端及登录”,学生应掌握Linux基本命令的使用。

在第 2 阶段,通过项目“Linux下的学生成绩统计”,学生应掌握Linux编程工具的使用:vi,gcc,gdb,make,Makefile。

在第 3 阶段,通过项目“Shell程序设计”,命令行参数、环境变量设置和shell语法。

在第 4 阶段,通过项目“文件操作”,学生应掌握Linux文件系统、文件结构和文件I/O。

在第 5 阶段,通过项目“进程控制和进程通信”,学生应掌握进程的创建、进程的通信方式以及编程方式

在第 6 阶段,通过项目“基于网络的进程间通信”,学生应掌握网络命令、网络协议、基于TCP和UDP协议网络通信实现服务器端和客户端一对一的通信过程。

因此,课程结束后,水到渠成地即可开发出“Linux网络传输系统”课程项目。

二、项目主要内容

项目构思(C):

我们经常会接触到一些网络应用程序,例如网络聊天程序等等。这里我们要开发一个类似的系统,该系统运行于网络环境中,通信双方可以互相传输数据,并可以将接收到的数据保存在文件中。

需求分析:

服务器:通过多线程/多进程(应更侧重于多线程)并发服务器方式与客户端通信,接受客户端连接后,显示客户端IP,接收客户端发来的数据并显示在屏幕上,然后将该数据反转后发给客户端。如果客户端发来bye,给客户端返回信息后断开与客户端的连接。

客户端:与服务器建立连接后,从键盘获得数据并发给服务器,然后接收服务器发力爱的信息并显示到屏幕上。如果键盘输入bye,则断开与服务器的连接。将建立连接、发送数据、接收数据、断开连接过程的时间及相关信息写入日志文件,日志文件名在连接成功后根据系统时间命名。

客户端与客户端通信:两个客户端都与服务器建立连接,他们通过服务器互相传输数据,即一个客户端将数据先传输给服务器,服务器再将数据转发给另一个客户端。

项目名称:Linux网络传输系统

项目设计(D):

(一)程序结构设计

在数据传输过程中为保证数据传输的可靠性,采用TCP套接字,绘制TCP套接字传输流程。

由于服务器可能要处理多个用户的请求,采用多进程或多线程方式处理客户端问题。

(二)程序数据设计

服务器端:

根据套接字编程过程,需要定义以下数据:监听套接字描述符、后者为连接套接字描述符、服务器端地址结构、客户端地址结构。

多进程编程,需要定义以下数据:进程ID。

与客户端进行数据传输,需要定义以下数据:接收缓冲区、发送缓冲区、客户端名字。

客户端:

根据套接字编程过程,需要定义以下数据:套接字描述符、服务器端地址结构。

与服务器进行数据传输,需要定义以下数据:发送缓冲区、接收缓冲区、用户缓冲区。

保存日志文件,需要定义以下数据:写入文件缓冲区、当前时间、文件描述符、当前时间的结构体。

(三)根据系统总体架构图,设计程序基本流程

服务器端流程

客户端流程

(四)将总体架构图中的各个功能模块分别进行设计,画出 N-S 图

项目构思和项目设计一起,形成一个简单易懂的项目开发说明文档。

项目实施(I):

根据项目设计部分得出的 N-S 图,利用已掌握的 Linux C 语言知识及编程思想,完成各个功能模块的函数编码。

项目运行(O):

服务器端运行命令:

./server

客户端运行命令:

./client 127.0.0.1

测试客户端运行结果、服务器端运行结果和客户端日志文件。

三、项目成果物描述

根据课堂讲解和项目开发说明文档,实现基于TCP或UDP和文件的“Linux网络传输系统”,提交系统的全部代码,要求系统要通过测试运行,并提供较清晰的注释。

猜你喜欢
服务器端进程客户端
Linux环境下基于Socket的数据传输软件设计
债券市场对外开放的进程与展望
如何看待传统媒体新闻客户端的“断舍离”?
改革开放进程中的国际收支统计
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
基于Qt的安全即时通讯软件服务器端设计
基于Qt的网络聊天软件服务器端设计
基于C/S架构的嵌入式监控组态外设扩展机制研究与应用
社会进程中的新闻学探寻