计算机网络课程设计_第1页
计算机网络课程设计_第2页
计算机网络课程设计_第3页
计算机网络课程设计_第4页
计算机网络课程设计_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机网络课程设计报告 题 目 本地网络信息设置与 网络对时程序设计 系 别 计算机科学与工程学院 专 业 信息安全 学生姓名 学 号 指导教师 王虎寅 2015 年 4 月 21 日 引言 1 1 设计目标及任务 2 1 1 课程设计的目标 2 1 2 课程设计的任务 2 2 需求分析 2 2 1 用户需求 2 2 2 开发环境 2 3 设计与实现 3 3 1 总体分析与设计 3 3 1 1 主窗体的设计 3 3 2 各个模块设计与实现 4 3 2 1 主机名字 4 3 2 2 IP 5 3 2 3 MAC 6 3 2 4 DNS 8 3 2 5 网络协议 10 3 2 6 IP 统计信息 11 3 2 7 TCP 统计信息 14 3 2 8 修改本地网络信息设置 15 3 2 9 时间模块 17 4 设计总结 20 4 1 遇到的问题 20 4 2 总结体会 21 参考资料 21 附录 22 代码 22 0 引言引言 深入理解计算机网络基本原理 将书本上抽象的概念与具体的实 现技术相结合 体会网络协议的设计与实现过程 以及专业技术人 员所使用的基本方法和技巧 熟悉相关应用开发工具 掌握网络协 议应用开发技术 进一步熟悉网络设备 学习组网技术 掌握网络 规划与设计的基本方法 培养一定的自学能力和独立分析问题 解 决问题的能力 对设计中遇到的问题 能通过独立思考 查阅资料 参考文献 寻求解决方案 本篇报告将这次课程设计所完成的软件 从准备阶段到完成的整 个过程逐步介绍以及创作过程中遇到的问题和最后的总结与心得体 会 使得读者能有效理解软件的实现的功能以及如何去实现该功能 也希望读者能从中学习到些许经验 1 1 1 设计目标及任务设计目标及任务 1 1 课程设计的目标课程设计的目标 本课程设计是学习完成 计算机网络 课程后 进行的一次全面的综合训练 培养进一步理解和掌握网络组网的过程及方案设计 为今后从事实际工作打下 基础 并学会一些编程语言的掌握与应用 例如 VS2013 并掌握其 MFC 的使 用 1 2 课程设计的任务课程设计的任务 设计一个本地网络信息设置与网络对时程序 主要功能如下 1 本地网络信息的获取 计算机名称 IP 地址 网卡地址 DNS 设置 安装的协议 提供的服务 TCP IP 运行信息 2 修改本地计算机的网络设置 3 采用 ntp 协议从 internet 上某个时间服务器 获取时间信息 准确地更新 本地机时钟 支持手动 定时自动两种方式 2 2 需求分析需求分析 2 1 用户需求用户需求 从用户的角度来分析本软件应具有以下功能 首先要有友好简结并且方便 操作的界面 能给使用它的人耳目一新的感觉 这样的话就要用到 VS2013 里 面的 MFC 了 其次就是通过该软件能够获取计算机的的一些基本的配置信息 和一些设置的修改 如 获取计算机的名称和 IP 地址 获取计算机的子网掩码 获取计算机的 DNS 设置 获取计算机的网卡地址 获取计算机安装的协议 获 取计算机提供的服务 获取计算机的所有网络资源 获取计算机 TCP IP 的所有 信息以及对本地计算机的网络设置的修改 这样的话 让人一打开这软件就能 很容易的了解它到底有什么功能和它能为用户做些什么工作了 2 2 开发环境开发环境 本次课程设计是在以下环境下设计创作完成 操作系统 Windos 8 1 开发平台 Visual Studio 2013 VS 是一个基本完整的开发工具集 它包括了整个软件生命周期中所需要 2 的大部分工具 如 UML 工具 代码管控工具 集成开发环境 IDE 等等 所写 的目标代码适用于微软支持的所有平台 包括 Microsoft Windows Windows Mobile Windows CE NET Framework NET Compact Framework 和 Microsoft Silverlight 及 Windows Phone Visual Studio 是目前最流行的 Windows 平台应用程序的集成开发环境 Visual Studio 2013 提供多种强大的工具和服务 帮助使用者创造新式应用 程序或将现有应用程序转变为新式应用程序 令用户在多种屏幕和设备上享受 到最佳的体验 同时仍与所需的服务和数据保持联系 3 3 设计与实现设计与实现 3 1 总体分析与设计总体分析与设计 获取本地网络信息 计算机的名称 IP 地址 子网掩码 DNS 设置 网卡 地址等等 需要大量代码一一对应 如果把他们细分成一个个模块 通过 MFC 对话框模式 点击一个按钮就显示出一个对应的信息 那么将会简单 明了得 多 所以 所需实现的功能都能在一个面板上通过相应按钮显示出来 3 1 1 主窗体的设计主窗体的设计 新建 MFC 工程课设 2 0 选择对话框模式 注意选择 Windows Sockets 复选框 其它保持默认 选择 Windows Sockets 后 系统就会自动完成 Windows Sockets 的初始化和用完资源后的释放 在窗体中添加各个控件 并修 改名称 这样一个大体框架就出来了 之后我们只需要双击按钮 进入到按钮 点击响应函数中去添加 修改代码 实现所需的功能 当然在实际设计中 在网络协议 IP 统计信息 TCP 统计信息这三个模块 考虑到弹出窗口来显示数据或许稍微显得有点不方便 所以采用在文本框中显 示 并且同一时间只会显示一种内容 3 图 1 主窗体设计 3 2 各个模块设计与实现各个模块设计与实现 3 2 1 主机名字主机名字 获取主机名字 使用 gethostname 函数就可以实现了 gethostname 函 数会返回本地主机的标准主机名 该函数把本地主机名存放入由 name 参数指 定的缓冲区中 返回的主机名是一个以 NULL 结束的字符串 主机名的形式取 决于 Windows Sockets 实现 它可能是一个简单的主机名 或者是一个域名 具体代码 初始化 WinSock WSADATA WSAData if WSAStartup MAKEWORD 2 0 获得本地计算机主机名称 CString strName T 4 gethostname strName GetBuffer 1024 1024 strName ReleaseBuffer CString strText T strText Format T 本地计算机的名称 n s strName AfxMessageBox strText 清理 WinSock WSACleanup 结果 图 2 主机名字 3 2 2 IP 此模块使用到 gethostbyname 函数 gethostbyname 函数说明 用域名或主机名获取 IP 地址 所以你会从代码中发现在 找到 IP 之前 会先 找到 本机名字 具体代码 初始化 WinSock WSADATA WSAData if WSAStartup MAKEWORD 2 0 获得本地计算机主机名称 CString strName T gethostname strName GetBuffer 1024 1024 strName ReleaseBuffer 获得本地计算机信息 gethostbyname 返回对应于给定主机名的包含主机名字和地址信息的 hostent 结构指针 5 struct hostent pHostEnt gethostbyname strName if pHostEnt NULL return 获得本地计算机 IP 地址 CString strText T strText T 本地计算机的 IP 地址 n int n 0 while pHostEnt h addr list n NULL CString strTemp T strTemp Format T d d d d n pHostEnt h addr list n 0 strText strTemp n AfxMessageBox strText 清理 WinSock WSACleanup 结果 图 3 IP 3 2 3 MAC GetAdaptersInfo 使用 GetAdaptersInfo 获取网卡详细信息 包括 Adapter 6 Name Mac Ip NetMask NetGate IP ADAPTER INFO 结构体 IP ADAPTER INFO 包含本地计算机某一个网络适配器的信息 具体代码 DWORD nLength 0 if GetAdaptersInfo NULL IP ADAPTER INFO pAdapterInfo IP ADAPTER INFO new BYTE nLength 获得本地计算机网卡信息 if GetAdaptersInfo pAdapterInfo return 获得本地计算机 MAC 地址 CString strText T 本地计算机的 MAC 地址 n IP ADAPTER INFO pCurrentAdapterInfo pAdapterInfo while pCurrentAdapterInfo NULL 获得每个网卡的 MAC 地址 CString strTemp T strTemp Format T 02X 02X 02X 02X 02X 02X n pCurrentAdapterInfo Address 0 pCurrentAdapterInfo Address 1 pCurrentAdapterInfo Address 2 pCurrentAdapterInfo Address 3 pCurrentAdapterInfo Address 4 pCurrentAdapterInfo Address 5 strText strTemp pCurrentAdapterInfo pCurrentAdapterInfo Next AfxMessageBox strText delete pAdapterInfo 结果 7 图 4 MAC 3 2 4 DNS 要用到的函数是 DWORD GetNetworkParams PFIXED INFO pFixedInfo PULONG pOutBufLen 参数及其功能说明如下 pFixedInfo 输出指向 FIXED INFO 结构的指针 该结构是用来获取本地计算 机的网络参数 pOutBufLen 输入指向一个 ULONG 变量的指针 该 ULONG 变量指向 pFixedInfo 结构的大小 功能 函数 GetNetworkParams 可以获取本地计算机的网络参数 从而获得 计算机的 DNS 设置 成功 返回 TRUE 失败 返回 FALSE 该函数在头文 件 Iphlpapi h 中声明 由库文件 Iphlpapi lib 来支持 具体代码 FIXED INFO FixedInfo ULONG ulOutBufLen DWORD dwRetVal IP ADDR STRING 描述 IP 地址链表的节点 IP ADDR STRING pIPAddr FixedInfo FIXED INFO GlobalAlloc GPTR sizeof FIXED INFO ulOutBufLen sizeof FIXED INFO 获取本机网络参数 GetNetworkParams if ERROR BUFFER OVERFLOW GetNetworkParams FixedInfo FixedInfo FIXED INFO GlobalAlloc GPTR ulOutBufLen 8 if dwRetVal GetNetworkParams FixedInfo else CString strHostName CString strDomainName strDomainName Format 域名 s FixedInfo DomainName CString strDNS DnsServerList 本机采用的 DNS 服务器链表 strDNS Format DNS 服务器 s FixedInfo DnsServerList IpAddress String CString str str Format s n s n s strHostName strDomainName strDNS MessageBox str pIPAddr FixedInfo DnsServerList Next while pIPAddr CString strIPAddr strIPAddr Format 备选 DNS 服务器是 s pIPAddr IpAddress String MessageBox strIPAddr pIPAddr pIPAddr Next 结果 图 5 DNS 1 9 图 6 DNS 2 图 7 DNS 3 3 2 5 网络协议网络协议 WSADATA 结构被用来储存调用 AfxSocketInit 全局函数返回的 Windows Sockets 初始化信息 这个结构被用来存储被 WSAStartup 函数调用后返回的 Windows Sockets 数据 它包含 Winsock dll 执行的数据 WSAStartup 是 Windows Sockets Asynchronous 的启动命令 Windows 下 的网络编程接口软件 Winsock1 或 Winsock2 里面的一个命令 WSAEnumProtocols 获取现有传送协议的相关信息 具体代码 初始化 WinSock 目的 建立实例 申请资源 赋初值等等 m ctrlList ResetContent WSADATA WSAData if WSAStartup MAKEWORD 2 0 int nResult 0 获得需要的缓冲区大小 DWORD nLength 0 nResult WSAEnumProtocols NULL NULL if nResult SOCKET ERROR return if WSAGetLastError WSAENOBUFS return 10 WSAPROTOCOL INFO pProtocolInfo WSAPROTOCOL INFO new BYTE nLength 获得本地计算机协议信息 nResult WSAEnumProtocols NULL pProtocolInfo if nResult SOCKET ERROR delete pProtocolInfo return for int n 0 n ResetContent MIB IPSTATS IPStats 获得 IP 协议统计信息 if GetIpStatistics CString strText T strText Format T 接收的数据包 d IPStats dwInReceives pListBox AddString strText strText Format T 接收的标头错误 d IPStats dwInHdrErrors pListBox AddString strText strText Format T 接收的地址错误 d IPStats dwInAddrErrors pListBox AddString strText strText Format T 转发的数据报 d IPStats dwForwDatagrams pListBox AddString strText strText Format T 接收的未知协议 d IPStats dwInUnknownProtos pListBox AddString strText strText Format T 丢弃的接收数据包 d IPStats dwInDiscards pListBox AddString strText strText Format T 传送的接收数据包 d IPStats dwInDelivers pListBox AddString strText strText Format T 输出请求 d 12 IPStats dwOutRequests pListBox AddString strText strText Format T 路由丢弃 d IPStats dwOutDiscards pListBox AddString strText strText Format T 丢弃的输出数据包 d IPStats dwOutDiscards pListBox AddString strText strText Format T 输出的数据包无路由 s d IPStats dwOutNoRoutes pListBox AddString strText strText Format T 需要重新组合 d IPStats dwReasmReqds pListBox AddString strText strText Format T 重新组合成功 d IPStats dwReasmOks pListBox AddString strText strText Format T 重新组合失败 d IPStats dwReasmFails pListBox AddString strText strText Format T 数据报分段成功 d IPStats dwFragOks pListBox AddString strText strText Format T 数据报分段失败 d IPStats dwFragFails pListBox AddString strText strText Format T 分段已创建 d IPStats dwFragCreates pListBox AddString strText 结果 13 图 9 IP 统计信息 3 2 7 TCP 统计信息统计信息 统计 TCP 连接信息 GetTcpStatistics 函数 与前面 IP 统计信息的 GetIpStatistics 相似 具体代码 m ctrlList ResetContent CListBox pListBox CListBox GetDlgItem IDC LIST1 pListBox ResetContent MIB TCPSTATS 包含本机上正运行的 TCP 协议的统计表 MIB TCPSTATS TCPStats 获得 TCP 协议统计信息 if GetTcpStatistics CString strText T strText Format T 主动开放 d TCPStats dwActiveOpens pListBox AddString strText strText Format T 被动开放 d TCPStats dwPassiveOpens pListBox AddString strText strText Format T 失败的连接尝试 d TCPStats dwAttemptFails pListBox AddString strText 14 strText Format T 重置连接 d TCPStats dwEstabResets pListBox AddString strText strText Format T 当前连接 d TCPStats dwCurrEstab pListBox AddString strText strText Format T 接收的分段 d TCPStats dwInSegs pListBox AddString strText strText Format T 发送的分段 d TCPStats dwOutSegs pListBox AddString strText strText Format T 重新传输的分段 d TCPStats dwRetransSegs pListBox AddString strText 结果 图 10 TCP 统计信息 3 2 8 修改本地网络信息设置修改本地网络信息设置 修改本地网络信息设置 具体为修改 IP DNS 使用 system 命令 调用命 令提示符 直接使用命令来达到修改的目的 但只针对某一网络连接 本次课 设针对的是笔记本电脑上带的 WLAN 这个网络连接 此处分为两个按钮 分别是 设置自动获取 IP 和 设置静态 IP 其中 静态 IP 是提前设定好的 用户无法修改 在 windows 环境下 命令行程序为 cmd exe 是一个 32 位的命令行程序 微软 Windows 系统基于 Windows 上的命令解释程序 类似于微软的 DOS 操作 系统 输入一些命令 cmd exe 可以执行 比如输入 shutdown s 就会在 30 秒后 关机 总之 它非常有用 NetSH Network Shell 是 windows 系统本身提供的功能强大的网络配置命 令行工具 利用这些我们就可以实现功能了 15 设置自动获取 IP 的具体代码 system netsh interface ip set address WLAN dhcp system netsh interface ip set dns WLAN dhcp 设置静态 IP 的具体代码 system netsh interface ip set address WLAN static 10 1 2 90 system netsh interface ip set dns WLAN static 202 99 160 68 结果 点击按钮会弹出 CMD 框 然后执行命令 点击 设置自动获取 IP 时 WLAN 的 IP 属性 图 11 IP 属性 1 16 点击 设置静态 IP 时 WLAN 的 IP 属性 图 12 IP 属性 2 3 2 9 时间模块时间模块 NTP Network Time Protocol 网络时间协议 是用来使网络中的各个计算 机时间同步的一种协议 它的用途是把计算机的时钟同步到世界协调时 UTC 其精度在局域网内可达 0 1ms 在互联网上绝大多数的地方其精度可以达到 1 50ms 它可以使计算机对其服务器或时钟源 如石英钟 GPS 等等 进行时间同步 它可以提供高精准度的时间校正 而且可以使用加密确认的方式来防止恶毒的 协议攻击 为查看当前系统时间 也为了能对比修改之后的时间 特意添加一个按钮来 查看当前系统时间 只是当前系统时间 并非联网查看准确时间 代码很简单 17 CString str 获取系统时间 CTime tm tm CTime GetCurrentTime str tm Format 现在时间是 Y 年 m 月 d 日 X MessageBox str NULL MB OK 可以选择连接的服务器 使用 Combo box 可以选择预存有的各个服务器 也可以自己输入一个服务器去尝试连接 修改时间 如果未连接服务器 那么 自动修改按钮将无法被点击 具体代码 连接 按钮 if s NULL closesocket s s socket AF INET SOCK STREAM 0 if s INVALID SOCKET MessageBox 初始化出错 exit 0 UpdateData true servAddr sin family AF INET servAddr sin port htons 13 inet addr 的功能是将一个点分十进制的 IP 转换成一个长整数型数 u long 类型 IP 地址转化函数 servAddr sin addr S un S addr inet addr m combo m state 连接 m combo UpdateData false if connect s sockaddr UpdateData false return m state 连接成功 UpdateData false m button EnableWindow true m button2 EnableWindow false 自动修改 按钮 char ulTime 256 int nRecv recv s char if nRecv 0 18 CString str stra ulTime nRecv 0 str ulTime str str Right 44 str SetAt 2 0 SYSTEMTIME 包含年月日时分秒 SYSTEMTIME st st wYear 2000 atoi str 年 str ulTime str str Right 41 str SetAt 2 0 st wMonth atoi str 月 str ulTime str str Right 38 str SetAt 2 0 st wDay atoi str 日 str ulTime str str Right 35 str SetAt 2 0 st wHour atoi str 小时 str ulTime str str Right 32 str SetAt 2 0 st wMinute atoi str 分 str ulTime str str Right 29 str SetAt 2 0 st wSecond atoi str 秒 st wMilliseconds 0 SetSystemTime m state 时间校准成功 UpdateData false else m state 服务器不能确定当前时间 UpdateData false 结果 19 图 13 当前系统时间 连接成功之后点击自动修改即可修改系统时间 图 14 连接服务器 图 15 修改成功 当连接失败的时候 图 16 连接服务器 2 此时点击自动修改会修改失败 图 17 修改失败 4 4 设计总结设计总结 20 4 1 遇到的问题遇到的问题 1 本次课程设计使用到的库文件 需要链接进去 项目属性 配置属性 链接器 输入 Netapi32 lib Iphlpapi lib 2 外部依赖项如果未自动添加 必须要手动全部添加进去 这样也会使设计过程更加顺利 3 AfxMessageBox 等弹出窗口函数 会提示与 Ctring 类型不符合 要修改字符集 项目属性 配置属性 常规 项目默认值 字符集 选择 使 用多字节字符集 4 2 总结体会总结体会 通过本课程设计 能让我更深入理解计算机网络基本原理 掌握了开发工 具 VS2013 中 MFC 的使用并且慢慢深入了解 MFC 的各项功能 这次设计更使 我经历网络应用系统开发及网络集成的全过程和受到一次综合练习 能较全面 地理解 掌握和综合运用所学的知识 在通过查询资料的过程中 学习到了大量函数的应用 原来 VS2013 提供 大量基础函数 只要我们能多去了解 去应用 我们今后的编程就会变得更加 简单 也能更容易实现各种所需功能 在编程过程中 遇到多种问题 解决问题的过程本身也是一个很好的学习 机会 所以在这其中也是学到很多 收获甚大 参考资料参考资料 1 深入浅出 MFC M 华中科技大学出版社 侯俊杰 2013 2 Visual C 网络编程案例实战 M 清华大学出版社 粱伟 2013 21 附录附录 代码代码 MFC 工程 课设 2 0Dlg cpp 课设 2 0Dlg cpp 实现文件 include stdafx h include 课设 2 0 h include 课设 2 0Dlg h include afxdialogex h include pragma comment lib WS2 32 include include include include include include ifdef DEBUG define new DEBUG NEW endif sockaddr in servAddr SOCKET s 用于应用程序 关于 菜单项的 CAboutDlg 对话框 class CAboutDlg public CDialogEx public CAboutDlg 22 对话框数据 enum IDD IDD ABOUTBOX protected virtual void DoDataExchange CDataExchange pDX DDX DDV 支持 实现 protected DECLARE MESSAGE MAP CAboutDlg CAboutDlg CDialogEx CAboutDlg IDD void CAboutDlg DoDataExchange CDataExchange pDX CDialogEx DoDataExchange pDX BEGIN MESSAGE MAP CAboutDlg CDialogEx END MESSAGE MAP C 课设 20Dlg 对话框 C 课设 20Dlg C 课设 20Dlg CWnd pParent NULL CDialogEx C 课设 20Dlg IDD pParent m hIcon AfxGetApp LoadIcon IDR MAINFRAME m combo T m state T void C 课设 20Dlg DoDataExchange CDataExchange pDX CDialogEx DoDataExchange pDX DDX Control pDX IDC LIST1 m ctrlList DDX Control pDX IDC BUTTON11 m button2 DDX Control pDX IDC BUTTON10 m button 23 DDX CBString pDX IDC COMBO1 m combo DDX Text pDX IDC STATE m state BEGIN MESSAGE MAP C 课设 20Dlg CDialogEx ON WM SYSCOMMAND ON WM PAINT ON WM QUERYDRAGICON ON BN CLICKED IDC BUTTON5 将 关于 菜单项添加到系统菜单中 IDM ABOUTBOX 必须在系统命令范围内 ASSERT IDM ABOUTBOX ASSERT IDM ABOUTBOX AppendMenu MF SEPARATOR pSysMenu AppendMenu MF STRING IDM ABOUTBOX strAboutMenu 设置此对话框的图标 当应用程序主窗口不是对话框时 框架将自动 执行此操作 SetIcon m hIcon TRUE 设置大图标 SetIcon m hIcon FALSE 设置小图标 TODO 在此添加额外的初始化代码 m button EnableWindow false WSADATA wsaData if WSAStartup MAKEWORD 2 2 exit 0 m state 选择一个服务器 m combo 128 138 140 44 UpdateData false return TRUE 除非将焦点设置到控件 否则返回 TRUE void C 课设 20Dlg OnSysCommand UINT nID LPARAM lParam if nID dlgAbout DoModal else CDialogEx OnSysCommand nID lParam 如果向对话框添加最小化按钮 则需要下面的代码 25 来绘制该图标 对于使用文档 视图模型的 MFC 应用程序 这将由框架自动完成 void C 课设 20Dlg OnPaint if IsIconic CPaintDC dc this 用于绘制的设备上下文 SendMessage WM ICONERASEBKGND reinterpret cast dc GetSafeHdc 0 使图标在工作区矩形中居中 int cxIcon GetSystemMetrics SM CXICON int cyIcon GetSystemMetrics SM CYICON CRect rect GetClientRect int x rect Width cxIcon 1 2 int y rect Height cyIcon 1 2 绘制图标 dc DrawIcon x y m hIcon else CDialogEx OnPaint 当用户拖动最小化窗口时系统调用此函数取得光标 显示 HCURSOR C 课设 20Dlg OnQueryDragIcon return static cast m hIcon void C 课设 20Dlg OnBnClickedButton5 TODO 在此添加控件通知处理程序代码 初始化 WinSock 目的 建立实例 申请资源 赋初值等等 m ctrlList ResetContent 26 WSADATA WSAData if WSAStartup MAKEWORD 2 0 int nResult 0 获得需要的缓冲区大小 DWORD nLength 0 nResult WSAEnumProtocols NULL NULL if nResult SOCKET ERROR return if WSAGetLastError WSAENOBUFS return WSAPROTOCOL INFO pProtocolInfo WSAPROTOCOL INFO new BYTE nLength 获得本地计算机协议信息 nResult WSAEnumProtocols NULL pProtocolInfo if nResult SOCKET ERROR delete pProtocolInfo return for int n 0 n Address 0 pCurrentAdapterInfo Address 1 pCurrentAdapterInfo Address 2 pCurrentAdapterInfo Address 3 pCurrentAdapterInfo Address 4 pCurrentAdapterInfo Address 5 strText strTemp pCurrentAdapterInfo pCurrentAdapterInfo Next AfxMessageBox strText delete pAdapterInfo void C 课设 20Dlg OnBnClickedButton4 TODO 在此添加控件通知处理程序代码 FIXED INFO FixedInfo ULONG ulOutBufLen DWORD dwRetVal IP ADDR STRING 描述 IP 地址链表的节点 IP ADDR STRING pIPAddr FixedInfo FIXED INFO GlobalAlloc GPTR sizeof FIXED INFO ulOutBufLen sizeof FIXED INFO 获取本机网络参数 GetNetworkParams if ERROR BUFFER OVERFLOW GetNetworkParams FixedInfo FixedInfo FIXED INFO GlobalAlloc GPTR ulOutBufLen if dwRetVal GetNetworkParams FixedInfo else CString strHostName 29 CString strDomainName strDomainName Format 域名 s FixedInfo DomainName CString strDNS DnsServerList 本机采用的 DNS 服务器链表 strDNS Format DNS 服务器 s FixedInfo DnsServerList IpAddress String CString str str Format s n s n s strHostName strDomainName strDNS MessageBox str pIPAddr FixedInfo DnsServerList Next while pIPAddr CString strIPAddr strIPAddr Format 备选 DNS 服务器是 s pIPAddr IpAddress String MessageBox strIPAddr pIPAddr pIPAddr Next void C 课设 20Dlg OnBnClickedButton8 TODO 在此添加控件通知处理程序代码 初始化 WinSock WSADATA WSAData if WSAStartup MAKEWORD 2 0 获得本地计算机主机名称 CString strName T gethostname strName GetBuffer 1024 1024 strName ReleaseBuffer 获得本地计算机信息 gethostbyname 返回对应于给定主机名的包含主机名字和地址信息的 hostent 结构指 针 struct hostent pHostEnt gethostbyname strName if pHostEnt NULL return 获得本地计算机 IP 地址 CString strText T 30 strText T 本地计算机的 IP 地址 n int n 0 while pHostEnt h addr list n NULL CString strTemp T strTemp Format T d d d d n pHostEnt h addr list n 0 strText strTemp n AfxMessageBox strText 清理 WinSock WSACleanup void C 课设 20Dlg OnBnClickedButton6 TODO 在此添加控件通知处理程序代码 m ctrlList ResetContent CListBox pListBox CListBox GetDlgItem IDC LIST1 pListBox ResetContent MIB TCPSTATS 包含本机上正运行的 TCP 协议的统计表 MIB TCPSTATS TCPStats 获得 TCP 协议统计信息 if GetTcpStatistics CString strText T strText Format T 主动开放 d TCPStats dwActiveOpens pListBox AddString strText strText Format T 被动开放 d TCPStats dwPassiveOpens pListBox AddString strText strText Format T 失败的连接尝试 d TCPStats dwAttemptFails 31 pListBox AddString strText strText Format T 重置连接 d TCPStats dwEstabResets pListBox AddString strText strText Format T 当前连接 d TCPStats dwCurrEstab pListBox AddString strText strText Format T 接收的分段 d TCPStats dwInSegs pListBox AddString strText strText Format T 发送的分段 d TCPStats dwOutSegs pListBox AddString strText strText Format T 重新传输的分段 d TCPStats dwRetransSegs pListBox AddString strText void C 课设 20Dlg OnBnClickedButton7 TODO 在此添加控件通知处理程序代码 m ctrlList ResetContent CListBox pListBox CListBox GetDlgItem IDC LIST1 pListBox ResetContent MIB IPSTATS IPStats 获得 IP 协议统计信息 if GetIpStatistics CString strText T strText Format T 接收的数据包 d IPStats dwInReceives pListBox AddString strText strText Format T 接收的标头错误 d IPStats dwInHdrErrors pListBox AddString strText 32 strText Format T 接收的地址错误 d IPStats dwInAddrErrors pListBox AddString strText strText Format T 转发的数据报 d IPStats dwForwDatagrams pListBox AddString strText strText Format T 接收的未知协议 d IPStats dwInUnknownProtos pListBox AddString strText strText Format T 丢弃的接收数据包 d IPStats dwInDiscards pListBox AddString strText strText Format T 传送的接收数据包 d IPStats dwInDelivers pListBox AddString strText strText Format T 输出请求 d IPStats dwOutRequests pListBox AddString strText strText Format T 路由丢弃 d IPStats dwOutDiscards pListBox AddString strText strText Format T 丢弃的输出数据包 d IPStats dwOutDiscards pListBox AddString strText strText Format T 输出的数据包无路由 s d IPStats dwOutNoRoutes pListBox AddString strText strText Format T 需要重新组合 d IPStats dwReasmReqds pListBox AddString strText strText Format T 重新组合成功 d IPStats dwReasmOks

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论