文档详情

计算机网络课程设计 端口扫描 实验报告.doc

发布:2017-11-25约1.85万字共19页下载文档
文本预览下载声明
目 录 1 需求分析 3 1.1 课程设计目的 3 1.2 课程设计内容 3 1.3 课程设计要求 3 2 概要设计 3 2.1 原理概述 3 2.2 运行环境 3 2.3 基本设计思路 3 2.4 功能模块设计 3 3 详细设计 3 3.1 程序流程 3 3.2 主要算法 5 3.3 主要数据结构 6 3.4 主要函数说明 6 4 用户使用手册 7 5 项目分析与总结 7 5.1 项目分析 7 5.2 总结与建议 8 附录A 源程序代码文件说明 8 附录B 参考文献 20 需求分析 1.1 课程设计目的 加深对TCP/IP的理解,熟悉socket编程。 课程设计内容 实现一个扫描器,使用TCP connect进行端口扫描,并把扫描到的结果记录下来。 课程设计要求 Windows或Linux环境下,程序在单机上运行; 使用端口扫描对一台主机进行扫描,并显示出结果;对一个网段进行IP扫描,显示出结果; 提供友好的用户界面。 概要设计 2.1 原理概述 TCP connect扫描是最基本的扫描,操作系统提供的connect()系统调用,用来与每一个感兴趣的目标计算机的端口进行连接。如果端口处于侦听状态,那么connect()就能成功。否则,这个端口是不能用的,即没有提供服务。 2.2 运行环境 Windows xp,VC++6.0 2.3 基本设计思路 创建一个CSocket套接字,通过CSocket的Connect函数测试该主机的某个端口是否能够连通,获得该端口的打开状态。 2.4 功能模块设计 (1)测试主机某个端口是否打开; (2)BOOL CMyDlg::TestConnection(CString IP,UINT nPort) { CSocket* pSocket; pSocket=new CSocket; ASSERT(pSocket); if (!pSocket-Create()) { delete pSocket; pSocket=NULL; return false; } while (!pSocket-Connect(IP,nPort)) { delete pSocket; pSocket=NULL; return false; } pSocket-Close(); delete pSocket; return true; } (2)响应单选按钮“扫描单个端口”和“扫描多个端口”的单击消息: void CMyDlg::OnRadio1Single() { m_bSinglePort=true; m_cSinglePort.EnableWindow(); m_cPortFrom.EnableWindow(false); m_cPortTo.EnableWindow(false); m_cBtnStop.EnableWindow(false); } void CMyDlg::OnRadio2Range() { m_bSinglePort=false; m_cSinglePort.EnableWindow(false); m_cPortFrom.EnableWindow(); m_cPortTo.EnableWindow(); m_cBtnStop.EnableWindow(false); } (3)显示列表框标题栏的成员函数: //增加列表框标题栏的某一列 BOOL CMyDlg::AddColumn(LPCTSTR strItem,int nItem,int nSubItem,int nMask,int nFmt) { LV_COLUMN lvc; lvc.mask=nMask; lvc.fmt=nFmt; lvc.pszText=(LPTSTR) strItem; lvc.cx=m_cResult.GetStringWidth(lvc.pszText)+25; if(nMaskLVCF_SUBITEM) { if(nSubItem!=-1) lvc.iSubItem=nSubItem; else lvc.iSubItem=nItem; } return m_cResult.InsertColumn(nItem,lvc); } //在列表框中加一条 BOOL CMyDlg::AddItem(int nItem,int nSubItem,LPCTSTR strItem ,int nImageIndex) { LV_ITEM lvItem; lvItem.mask=LVIF_TEXT; lvItem.iItem=nItem; lvItem.iSubItem=nSubItem;
显示全部
相似文档