为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

获取计算机IP地址和主机名及MAC地址

2017-09-02 7页 doc 38KB 88阅读

用户头像

is_833902

暂无简介

举报
获取计算机IP地址和主机名及MAC地址获取计算机IP地址和主机名及MAC地址 贵州大学实验报告 学院:计信学院 专业: 信息安全 班级:101 姓名 学号 实验组 实验时间 指导教师 成绩 实验项目名称 获取计算机IP地址和主机名及MAC地址 实1、掌握MFC程序设计的基本方法; 验2、了解在该网络环境下利用Winsock获取IP地址的方法及实现原理; 目3、了解在该网络环境下利用Winsock获取计算机名的方法及实现原理。 的 实 要通过本次试验初步了解Winsock程序的编制,并掌握如何利用MFC进行程序设计,验 为以后自己编制类似的程序打下良好...
获取计算机IP地址和主机名及MAC地址
获取计算机IP地址和主机名及MAC地址 贵州大学实验报告 学院:计信学院 专业: 信息安全 班级:101 姓名 学号 实验组 实验时间 指导教师 成绩 实验项目名称 获取计算机IP地址和主机名及MAC地址 实1、掌握MFC程序的基本方法; 验2、了解在该网络环境下利用Winsock获取IP地址的方法及实现原理; 目3、了解在该网络环境下利用Winsock获取计算机名的方法及实现原理。 的 实 要通过本次试验初步了解Winsock程序的编制,并掌握如何利用MFC进行程序设计,验 为以后自己编制类似的程序打下良好的基础。 原 理 实 利用winsock提供的相关函数进行MFC程序的编制,要求获取计算机IP地址和主验 机名,并显示在窗口上。 内 容 实 PC机 验 V C++6.0 环境 环 境 1. 启动Visual C++6.0开发环境 从“开始”菜单中选择“程序| Microsoft Visual Studio 6.0 | Microsoft Visual 实C++ 6.0”,显示Visual C++6.0开发环境窗口。 验2. 创建一个项目 (1)单击File菜单中的New选项,显示New(新建)对话框。 步(2)单击Project(项目)标签,在Project选项卡中,选择MFC AppWizard(exe)骤 (MFC 应用程序向导)。在Location(位置)文本框中指定一个路径,在Project Name (项目名称)文本框中为项目输入一个名字(例如:Winsock_getIP),单击OK按钮。 (3)在弹出的MFC AppWizard-Step1of 4对话框中选择Dialog Based(对话框基 础)单选项,然后单击下一步按钮。 1 (4)在MFC AppWizard-Step2 of 4对话框中注意勾选windows sockets支持复选 框,在标对话框中输入想显示的窗口标题(例如:获取主机名和IP地址),然后单击 下一步按钮。 (5)其余步骤选择默认值。 (6)最后在MFC AppWizard-Step4 of 4对话框中单击完成按钮,完成项目的建立。 主要实现函数程序清单: //获得主机名 int CWinsock_getIPDlg::GetLocalHostName(CString &sHostName) { char szHostName[256]; int nRetCode; nRetCode = gethostname(szHostName,sizeof(szHostName)); if(nRetCode != 0) { return WSAGetLastError(); 实 } 验 sHostName = szHostName; 结 return 0; 果 } 获得IP地址 int CWinsock_getIPDlg::GetIPAddress(const CString &sHostName, CString &sIPAddress) { struct hostent FAR* lpHostEnt = gethostbyname(sHostName); if(lpHostEnt == NULL) { return WSAGetLastError(); } LPSTR lpAddr = lpHostEnt->h_addr_list[0]; if(lpAddr) 2 { struct in_addr inAddr; memmove(&inAddr,lpAddr,4); sIPAddress = inet_ntoa(inAddr); if(sIPAddress.IsEmpty()) { return 0; } } return 0; } 获得MAC地址 void CWinsock_getIPDlg::GetMAC(CString &sMAC) { PIP_ADAPTER_INFO pAdapterInfo; PIP_ADAPTER_INFO pAdapter=NULL; DWORD dwRetVal; pAdapterInfo=(IP_ADAPTER_INFO *)malloc(sizeof(IP_ADAPTER_INFO)); ULONG ulOutBufLen=sizeof(IP_ADAPTER_INFO); if (GetAdaptersInfo(pAdapterInfo,&ulOutBufLen)==ERROR_BUFFER_OVERFLOW) { free(pAdapterInfo); pAdapterInfo=(IP_ADAPTER_INFO *)malloc(ulOutBufLen); } if((dwRetVal=GetAdaptersInfo(pAdapterInfo,&ulOutBufLen))==NO_ERROR) { pAdapter=pAdapterInfo; if(pAdapter) sMAC.Format("%2.2x-%2.2x-%2.2x-%2.2x-%2.2x-%2.2x", 3 pAdapter->Address[0], pAdapter->Address[1], pAdapter->Address[2], pAdapter->Address[3], pAdapter->Address[4], pAdapter->Address[5]); } } 对确定键的实现 void CWinsock_getIPDlg::OnOK() { // TODO: Add extra validation here int nRetCode; nRetCode=GetLocalHostName(m_sHostName); nRetCode=GetIPAddress(m_sHostName,m_sIPAddress); GetMAC(m_sMAC); UpdateData(FALSE); } void CWinsock_getIPDlg::OnCancel() { // TODO: Add extra cleanup here CDialog::OnCancel(); } 4 点击确定后: 点击取消。 实 1.函数GetLocalHostName(Cstring& sHostName)中的形参是出口参数还是入 验 口参数, 总 答:是入口参数。 结 2.函数GetIPAddress(const Cstring& sHostName,Cstring& sIPAddress) 5 中的形参是出口参数还是入口参数, 答:是入口参数。 3.在上面程序中我们并没有让确定按钮发挥作用,看看能否将程序改为不要 一运行就能在窗口上看到结果,而需要点击确定按钮后才看到结果,请说明 如何做, 答:进入其成员函数,添加如下语句: int nRetCode; nRetCode=GetLocalHostName(m_sHostName); nRetCode=GetIPAddress(m_sHostName,m_sIPAddress); GetMAC(m_sMAC); UpdateData(FALSE); 指 导 教 师 意 见 签名: 年 月 日 注:各学院可根据教学需要对以上栏木进行增减。表格内容可根据内容扩充。 6
/
本文档为【获取计算机IP地址和主机名及MAC地址】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索