计算机网络课程设计报告



计算机网络课程设计


第一章、绪论

1.1 引言…………………………………………………..2

1.2 Socker编程机制………………………………….2

第二章、课程设计目的

 2.1 基本目的…………………………………………….3

2.2 学会自我学习.........................................4

第三章、课程设计内容与要求

 3.1 课程设计内容与要求……………………………..4

3.2  思路分析................................................4

第四章、实验步骤

4.1 vs 2010 创建简单的基本对话框 ……….......6

4.2添加相应的控件........................................11

4.3给控件添加代码........................................13

4.4编译测试..................................................14

第五章、重点分析

 5.1问题分析………………………………………………16

 第六章、总结

 ......………………………………………………………….





  1. 绪论  


1.1 引言


随着 Internet日益广泛的应用,黑客攻击行为也是有增无减。如何有效地抵御这种攻击行为,一直是信息安全领域的焦点。


而其中,端口扫描技术吸引了越来越多人的关注,端口扫描是黑客搜集,目标主机信息的一种常用的方法。为了有效地对付网络入侵行为,对端口扫描进行研究是非常有益和必要的。攻击者在攻击一个目标时,首先要获取目标的一些基本信息,端口扫描就是其中最简单最重要的方法之一,它可以扫描目标主机中开放的端口,从而确定目标主机中提供的服务,为下一步攻击做准备。针对端口扫描技术,相应的端口扫描检测技术显得越发重要,作为网络安全技术中的一个重要课题,端口扫描检测技术意义重大。


本课程设计就是设计一个简单的端口扫描程序,判断主机的相应端口的开放情况,从而加强对端口的保护,达到抵御黑客攻击的效果。


1.2 Socket编程机制


我们可以简单的把Socket理解为一个可以连通网络上不同计算机程序之间的管道,把一堆数据从管道的A端扔进去,则会从管道的B端(也许同时还可以从CDEF……端冒出来)。管道的端口由两个因素来唯一确认,即机器的IP地址和程序所使用的端口号。IP地址的含义所有人都知道,所谓端口号就是程序员指定的一个数字,许多著名的木马程序成天在网络上扫描不同的端口号就是为了获取一个可以连通的端口从而进行破坏。  


比较著名的端口号有http80端口和ftp21端口。当然,建议大家自己写程序不要使用太小的端口号,它们一般被系统占用了,也不要使用一些著名的端口,一般来说使用1000~5000之内的端口比较好。


Socket可以支持数据的发送和接收,它会定义一种称为套接字的变量,发送数据时首先创建套接字,然后使用该套接字的sendto等方法对准某个IP/端口进行数据发送;接收端也首先创建套接字,然后将该套接字绑定到一个IP/端口上,所有发向此端口的数据会被该套接字的recv等函数读出。如同读出文件中的数据一样。


  1. 课程设计目的


2.1 基本目的


通过本次的一个简单的课程设计,了解并掌握简单的socket编程和web程序的设计,学会VC++或者VS 2010在设计应用程序的使用方法,能独立完成简单的MFC的应用程序设计,了解控件的相应属性的设置,了解相应MFC的库函数的调用和重写。


 


 


2.2 学会自我学习


在进行课程设计的同时,学会自我学习,自我解决问题,不能太依赖他人,学会独立的完成任务。


  1. 课程设计内容与要求


3.1 课程设计题目与要求


设计一个基于主机端口扫描的应用程序,要求能扫描出主机相应端口是开启(opend)还是关闭状态(closed)。并且要有相应的密码登录过程,不允许随意查询。至少要求基于UDPTCP两种方式的扫描。可以多次进行扫描,重新扫描前需要清空以前的数据。



 

3.2 思路分析



 



第四章、实验步骤


4.1 VS创建简单的基本对话框


1)新建,项目,新建一个MFC应用程序




2)如图所示,给项目起一个名字如MFC





3)进入MFC应用程序向导


 



4)选择基于对话框的类型,下一步




5)下一步





6)选择Window套接字,下一步


7)点击下一步



8)完成



9)生成界面如下,一个.exe简单界面形成了



10)删除“TODO:在此放置对话框控件“



4.2添加相应的控件


1)在工具栏中选择相应的控件,添加到界面上,如下



2)右键属性,修改每个控件的ID和名称,以及相应的属性得到结果如下



3)在项目类向导中,给控件添加成员变量和设置类型




4.3给控件添加功能代码


1)双击相应功能按钮,进入编写代码区。列如双击清空按钮,则进去如下代码编写区



// TODO:在此添加控件通知处理程序代码。处编写相应的功能代码




4.4编译测试


1)完成代码编写后,点击调试->开始执行(Ctrl + F5)进行编译测试




2)在出现的应用程序中输入相应的内容进行测试,测试结果如下:




 

第五章、结果分析


5.1问题分析


在设计过程中遇到很多问题,下面是遇到的一些问题和具体的解决办法


问题一:


编译的exe应用程序在本机上能运行,但是不能再其他PC上运行。(既然设计了一个应用程序当然是希望在所有的PC上都能成功的运行,但是在开始设计的时候往往自己编译的程序只能在本机上运行。)


解决方案:


在项目属性中,常规设置中的MFC的使用,修改成在静态库中使用MFC即可!



问题二:


成功编译后想加个按钮,添加后双击这个按钮后进去编译代码区,但是没写代码觉得这个按钮没用,想删除,但是删除后,重新编译出现错误,怎么解决。(明明把按钮删除了,开始都可以成功编译,为什么现在会出现错误呢?)


解决方案:


在使用MFC编译应用程序时,双击按钮后不单单只是生成一个功能函数,还会生成一个关联,往往在下面图中的代码上,找到并删除与按钮相关的相应的语句即可。





问题三:


MFC中如何彻底的删除一个类呢?(往往添加了一个类,后来发现不对,要删除,怎样才能彻底的删除呢?)


解决方案:


首先在解决方案资源管理器中,找到相应的头文件和源文件,删除掉。然后关闭项目,到项目文件中删除相应的.h.cpp文件。


问题四:


UpdateData()函数的使用方法


解决方案:


UpdateData()函数有两个参数,分别是truefalse


UpdateData(true)用窗体上控件中的内容来更新和控件相关连的变量的值(只能更新value类型的变量)


例如:


你在你的窗体中有一个Edit控件,为这个控件关联了


CString类型的变量


m_strName;你在控件中添入内容之后,必须调用


UpdateData(true);才能把你添入的内容传给m_strName这个变量


UpdateData(false);


和上面的正好相反,还是以上面的Edit为例,当你在程序中改变了m_strName变量的内容的时候,如果你想让那个Edit也显示更新后的


m_strName,就必须调用


UpdateData(false);


这样在你的Edit中才能显示更新完的变量的值!



第六章、总结



经过长达一个星期的课程设计终于完成了,虽然这个星期也辛苦,每天都是在电脑旁,不停的编写代码和测试程序。但是当一个应用程序设计出来了过后,一切的痛苦感觉都是值得的,看着自己辛辛苦苦写出来的东西,虽然不是很高大上,但是那种喜悦感还是有的。还是有点成就感的,尽管这是个非常简单的MFC的应用程序的设计,但是不管怎么说是自己这个星期的劳动成果。


这个星期虽然只是做个简单的设计,但是还是学到了很多的知识。从一开始连MFC是什么都不知道,到自己可以写一个应用程序,我觉得这就是进步,就是学习。在这段时间里,我不仅学到了专业知识,更重要的是我学会了如何去学习,如何在自己一无所知的时候,利用身边的工具去学习知识。这几天我不断的查书,不断的从网上找资料,教程,自己学习有关MFC的编程知识。在设计的过程中,遇到了很多问题,自己也学会了如何独立的去解决问题,而不是像以前一样,遇到问题的时候要么去问别人要么就是逃避,我觉得这才是最重要的。


另外,在做课设的时候我还发现了,作为一个程序员不管在什么时候都要做好备份的工作,因为你不知道什么时候会出现一些不可预料的错误,轻者修改一些就ok了,重者会让你这一段时间的成果毁于一旦。。。。。。那时候才知道什么叫一失足成千古恨。


 



参考文献:

  1.百度文库

  1. C++语言程序设计(第四版)郑莉董渊何江舟编著

  2. MFC编程技巧与范例详解曾凡锋苗雨编著


  • 9
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值