作业目标
要求学生熟练掌握《Linux编程》课程中的知识点,包括Linux常用命令、bash脚本、编译和调试环境、读写文件、进程间通信和网络编程等。基于以上知识点,分组编程完成本作业的具体要求。
问题描述
网络数据的抓取和分析已经成为通信大数据分析的重要内容之一。本作业要求在Linux下使用C语言实现一个抓取并分析网络数据的软件系统。该系统采用客户端和服务器端开发模式。在客户端,设计两个进程P1和P2同时读取网卡上的数据,P1读取数据后,负责将TCP报文中的头部数据写入到Packet文件中,P2读取数据后,负责将UDP报文的头部同样写入到Packet文件中。另外,还需要将数据发送到服务器端存储。服务器段软件需要一个进程接收客户端发送的文件,并将接收到的数据保存成一份文件。程序运行之后,用户可以随时终止程序的运行(比如按下CTRL+C),要求两个进程P1和P2在结束前将各自读取的报文数量(N_rev_P1、N_rev_P2)和各自写入Packet文件中报文的数量(N_wrt_P1、N_wrt_P2)分别写入Report文件中,并计算读取与写入的百分比(N_wrt_P1/N_rev_P1、N_wrt_P2/N_rev_P2)写入到Report文件。
设计要求
(1)Packet文件要求按照图1所示格式,“序号 [TCP/UDP]:TCP报文段或者UDP报文段首部”,如“1 [TCP]:.... ”(下一次写入需要换行)。Report文件要求按照图1所示格式,如“N_rev_P1:10”(换行);
(2)实现软件要求可演示,通过应用或者通过测试代码发送测试TCP/UDP报文;
(3)采用Socket通信机制完成客户端/服务器端数据传输;
(4)采用C语言在Linux环境下实现,可以采用两个虚拟机分别模拟客户端和服务器端;
(5)实验报告书写认真,重点突出(建议页数6-8页),每人提交一份,明确自己所做工作,针对自己负责的软件模块不要贴代码,可以有流程图,并给出测试和运行结果;
(6)代码结构清晰、源文件结构合理,使用本课程所讲的Makefile文件进行编译和维护软件,或者开发图形界面,视为加分项。
时间和其它要求
(1)本次作业要求分组完成,每组人数至多5人,每组提交一份源代码;
(2)完成的小组,可以在第18周实验课的时候交给老师检查,包括报告(打印版)和程序演示,电子版交班长(班长未选课,选课排最前的学生)汇总之后发给老师,未完成的小组,最迟于第19周交给老师检查;
(3)注:独立完成,如果存在抄袭等现象,一旦发现视为不及格。
附2 实验报告模板
课题题目
(题目格式:宋体,3号,加粗,居中对齐)
一、概述(格式:宋体,小4号,加粗,两端对齐)
对课题的目标、任务和内容的分析和描述。
(正文格式:宋体,小4号,不加粗,两端对齐,1.15倍行距)
二、需求分析 (格式:宋体,小4号,加粗,两端对齐)
在该部分中叙述每个模块的功能要求。
(正文格式:宋体,小4号,不加粗,两端对齐,1.15倍行距)
三、设计与实现
在此说明实践过程中采用了何种技术或算法,可以包括如下内容:
需求分析和功能设计:可以采用功能框图、用例图并配文字的方法描述;
软件结构设计:描述软件系统结构;
核心算法及数据结构设计,核心数据结构设计可以采用类图或其他图描述,并配文字说明;核心组件可通过流程图、活动图、时序图或协作图并配文字的方法描述,不允许直接贴代码。
(正文格式:宋体,小4号,不加粗,两端对齐,1.15倍行距)
四、测试与分析(格式:宋体,小4号,加粗,两端对齐)
(正文格式:宋体,小4号,不加粗,两端对齐,1.15倍行距)
在此描述测试方法、测试用例、测试结果及分析,包括如下内容:
测试用例设计:含功能测试和性能测试;
测试结果:用测试数据去验证程序的正确性和高效性;测试结果应有运行屏幕截图,实验数据可采用图表,并配文字说明;
分析:分析课题设计的时间复杂度和空间复杂度。
五、总结(格式:宋体,小4号,加粗,两端对齐)
介绍设计和调试时遇到的问题以及解决方法。
对设计进行总结和讨论,包括设计的优点、缺点、时间性能、空间性能、改进方法等。
(正文格式:宋体,小4号,不加粗,两端对齐,1.15倍行距)
版权所有:编程辅导网 2021 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。