计算机网络端口扫描,计算机网络课程设计

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

目 录1 需求分析 31.1 课程设计目的 31.2 课程设计内容 31.3 课程设计要求 32 概要设计 32.1 原理概述 32.2 运行环境 32.3 基本设计思路 32.4 功能模块设计 33 详细设计 33.1 程序流程 33.2 主要算法 53.3 主要数据结构 63.4 主要函数说明 64 用户使用手册 75 项目分析与总结 75.1 项目分析 75.2 总结与建议 8附录 A 源程序代码文件说明 .8附录 B 参考文献 .2021. 需求分析1.1 课程设计目的加深对 TCP/IP 的理解,熟悉 socket 编程。课程设计内容实现一个扫描器,使用 TCP connect 进行端口扫描,并把扫描到的结果记录下来。课程设计要求(1) Windows 或 Linux 环境下,程序在单机上运行;(2) 使用端口扫描对一台主机进行扫描,并显示出结果;对一个网段进行 IP 扫描,显示出结果;(3) 提供友好的用户界面。2. 概要设计2.1 原理概述TCP connect 扫描是最基本的扫描,操作系统提供的 connect()系统调用,用来与每一个感兴趣的目标计算机的端口进行连接。如果端口处于侦听状态,那么 connect()就能成功。否则,这个端口是不能用的,即没有提供服务。2.2 运行环境Windows xp,VC++6.02.3 基本设计思路创建一个 CSocket 套接字,通过 CSocket 的 Connect 函数测试该主机的某个端口是否能够连通,获得该端口的打开状态。2.4 功能模块设计(1)测试主机某个端口是否打开;(2) “扫描结果”标题栏;(3)扫描单个或多个端口的单选按钮;(4) “扫描” , “停止” , “保存”按钮。3.详细设计3.1 程序流程3开始扫描初始化扫描单个端口?Tm_bSinglePort=true;m_cSinglePort.EnableWindow();m_cPortFrom.EnableWindow(false);m_cPortTo.EnableWindow(false);m_cBtnStop.EnableWindow(false);Fm_bSinglePort=false;m_cSinglePort.EnableWindow(false);m_cPortFrom.EnableWindow();m_cPortTo.EnableWindow();m_cBtnStop.EnableWindow(false);设置端口开始侦听端口有错误?显示结果FT设置下一端口扫描结束43.2 主要算法(1)测试主机某个端口是否打开的函数 TestConnection():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;5if(nMaskelselvc.iSubItem=nItem;}return m_cResult.InsertColumn(nItem,}//在列表框中加一条BOOL CMyDlg::AddItem(int nItem,int nSubItem,LPCTSTR strItem ,int nImageIndex){ LV_ITEM lvItem;lvItem.mask=LVIF_TEXT;lvItem.iItem=nItem;lvItem.iSubItem=nSubItem;lvItem.pszText=(LPTSTR)strItem;if(nImageIndex!=-1){ lvItem.mask|=LVIF_IMAGE;lvItem.iImage|=LVIF_IMAGE;}if(nSubItem==0)return m_cResult.InsertItem(return m_cResult.SetItem(}//加一列标题栏字符void CMyDlg::AddHeader(LPTSTR hdr){ if (m_pColumns)m_pColumns-AddTail(hdr);}//显示列表框标题栏void CMyDlg::ShowHeaders(){ int nIndex=0;POSITION pos=m_pColumns-GetHeadPosition();while(pos){ CString hdr=(CString)m_pColumns-GetNext(pos);AddColumn(hdr,nIndex++);}}(4) “扫描” , “停止” , “保存”按钮,见附录程序。3.3 主要数据结构及主要函数说明(1)测试主机某个端口是否打开——TestConnection 函数;(2) “扫描结果”标题栏成员函数——AddHeader,AddColumn,ShowHeaders;在列表框中添加字符串的函数——AddItem;(3)扫描单个或多个端口的单选按钮——OnRadioSingle()和6OnRadioRange();(4) “扫描” , “停止” , “保存”按钮——OnButton1Start(),OnButton2Stop(),OnButton3Save();4.用户使用手册输入要扫描

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值