第二次寒假作业

|这个作业属于哪个课程|[2022面向对象程序设计](https://edu.cnblogs.com/campus/fzu/2022OOP)|

|这个作业要求在哪|[第二次寒假作业](https://edu.cnblogs.com/campus/fzu/2022OOP/homework/12442)|

|这个作业的目标|输出数据包最佳的匹配规则|

|作业正文|2022面向对象程序设计寒假作业2|

|其他参考文献|... |

分析题目需要学习的内容

https://www.cnblogs.com/TwkYUE/p/15837350.html)

简化题目(思路)

1.把数据集的Ip地址由十进制转换为点十分进制。
2.学会读取文件,把文件成功打开,并能够依次读取数据,储存起来。
3.数据集中的源地址与规则集中地址进行比对,找到符合的。
4.进行数据包中的端口与规则集中端口的比较。
5.数据包中的协议号要正确匹配,6对应的是0x06/0x00,其余协议号对应的是0x06/0xFF。
6.成功输出。

部分代码


把ip地址转化为点十分进制后,利用itoa函数转化为字符串(为了方便后续的比对)


这一部分是读取文件,利用循环依次读取数据。
在读取数据这一环节我遇到了许多问题...我花了好久依旧很难写出一个简单的代码。我尝试过使用fgetc来依次读取字符再把字符存储进数组里再进行后续比对,问题在于我无法找到一个判断点来使得当字符读到数据集中每个源地址末尾时停止循环。于是我尝试使用fgets来读取字符串,问题依然是无法读取完源地址后终止循环。期间还去CSDN看了许多博客学习了许多的函数比如fseek,fread等等,企图用光标定位的方法来获取数据,可是也无法实现。最后发现了用fscanf与freopen,fgetpos,fsetpos相配合读取数据集中的数据。
之后建立结构体,用来读取规则集的数据,进行比对。


只有一部分的结果是对的,因为还有问题还没解决。就是循环过大会导致时间耗时增加,过多的循环会导致bug出现我的程序无法运行,因此我把循环减小一些,即我测试的数据只有一部分,所以代码还需要完善。(我看了好多博客但是都没啥帮助)
(这段时间家里一直都挺忙的每天都不能抽出很多时间学习,所以目前的代码我会在后续花更多时间去改善的呜呜呜...)

posted @ 2022-01-30 22:41  田hy  阅读(33)  评论(1编辑  收藏  举报