一.实验目的

1、基本掌握了 MIB的结构;

2、掌握C++环境下SNMP编程的基本方法。

二.实验环境

1、VC++ 6.0

2、《Visual C++开发基于SNMP网络管理软件》书的第七章内容和源代码,其主要源代码在工程文件的MibBrowserView.cpp中。

三.实验要求

由于MibBrowser.dsw给出的源程序代码中,每次只能得到一个对象的值,因此本实验的要求就是:修改Get和Getnext操作的显示结果,使其能够把一次性把一个OID子树下的所有对象的内容能够显现出来。具体要求如下:

1.如果OID子树下没有表对象,把该子树下的所有对象的值显示在右侧的表格中。

2.如果OID子树下有标量对象,也有表对象,把该子树下的所有标量对象的值和表对象中所有值显示在右侧的表格中。标量对象的显示方式采用原来的显示方式,而表对象内容的显示必须是表格,可以采用连接的形式,在现在显示List的右边以表格的形式显示素有所有对象的值。

3.如果OID子树下只有表对象,把该子树下的所有对象中所有值显示在右侧的表格中,要求采用表格的形式,而不是原来的树形结构。

四.实验报告的内容

//GET操作;

void CMibBrowserView::OnGet()

{

HTREEITEM hNode;

MibNode* pNodeData;

CString ipadd,community,oidstr;

m_ipadd.GetWindowText(ipadd);

if(m_ipadd.IsBlank())

{

AfxMessageBox("IP地址错误!");

return ;

}

m_ipadd.GetWindowText(ipadd);

m_community.GetWindowText(community);

m_oid.GetWindowText(oidstr);

ipadd+=":161";

Snmp::socket_startup();

UdpAddress address((LPCTSTR)ipadd);

Oid oid((LPCTSTR)oidstr);

snmp_version version=version1;

int status;

Snmp snmp(status, 0, false);

Pdu pdu;

Vb vb;

vb.set_oid(oid);

pdu += vb;

CTarget ctarget(address);

ctarget.set_version(version);

ctarget.set_retry(1);

ctarget.set_timeout(100);

ctarget.set_readcommunity((LPCTSTR)community);

SnmpTarget *target;

target = &ctarget;

status = snmp.get(pdu, *target);

if (status ==SNMP_CLASS_SUCCESS)

{

pdu.get_vb(vb,0);

CString reply_oid=vb.get_printable_oid();

CStringreply_value=vb.get_printable_value();

hNode=SearchNode(reply_oid);

if (hNode!=NULL)

{

pNodeData=(MibNode*)m_tree.GetItemData(hNode);

reply_oid.Replace((LPCTSTR)pNodeData->POid,

(LPCTSTR)m_tree.GetItemText(hNode));

if (pNodeData->PInteger!=NULL)

{

POSITIONindex=pNodeData->PInteger->Find(reply_value);

if (index!=NULL)

{

pNodeData->PInteger->GetNext(index);

reply_value=pNodeData->PInteger->GetNext(index);

}

}

}

if (m_list.GetItemCount()>0)

m_list.DeleteAllItems();

introw=m_list.InsertItem(1,reply_oid);

m_list.SetItemText(row,1,reply_value);

}

Snmp::socket_cleanup();

CMainFrame *pF=(CMainFrame *)AfxGetMainWnd();

int num=m_list.GetItemCount();

oidstr.Format("%d",num);

oidstr="共取回"+oidstr+"个对象";

pF->m_wndStatusBar.SetPaneText(0,oidstr);

}

//GETNEXT操作:

void CMibBrowserView::OnGetnext()

{

HTREEITEM hNode;

MibNode* pNodeData;

CString ipadd,community,oidstr;

m_ipadd.GetWindowText(ipadd);

if(m_ipadd.IsBlank())

{

AfxMessageBox("IP地址错误!");

return ;

}

m_ipadd.GetWindowText(ipadd);

ipadd+=":161";

m_community.GetWindowText(community);

m_oid.GetWindowText(oidstr);

Snmp::socket_startup();

UdpAddress address((LPCTSTR)ipadd);

Oid oid((LPCTSTR)oidstr);

snmp_version version=version1;

int status;

Snmp snmp(status, 0, false);

Pdu pdu;

Vb vb;

vb.set_oid(oid);

pdu += vb;

CTarget ctarget( address);

ctarget.set_version(version);

ctarget.set_retry(1);

ctarget.set_timeout(100);

ctarget.set_readcommunity((LPCTSTR)community);

SnmpTarget *target;

target = &ctarget;

status = snmp.get_next(pdu,*target);

if (status ==SNMP_CLASS_SUCCESS)

{

pdu.get_vb(vb,0);

CString reply_oid=vb.get_printable_oid();

CStringreply_value=vb.get_printable_value();

hNode=SearchNode(reply_oid);

if (hNode!=NULL)

{

pNodeData=(MibNode*)m_tree.GetItemData(hNode);

reply_oid.Replace((LPCTSTR)pNodeData->POid,

(LPCTSTR)m_tree.GetItemText(hNode));

if(pNodeData->PInteger!=NULL)

{

POSITIONindex=pNodeData->PInteger->Find(reply_value);

if (index!=NULL)

{

pNodeData->PInteger->GetNext(index);

reply_value=pNodeData->PInteger->GetNext(index);

}

}

}

if (m_list.GetItemCount()>0)

m_list.DeleteAllItems();

introw=m_list.InsertItem(1,reply_oid);

m_list.SetItemText(row,1,reply_value);

}

else

AfxMessageBox("操作失败,请检查配置!");

Snmp::socket_cleanup();

CMainFrame *pF=(CMainFrame *)AfxGetMainWnd();

int num=m_list.GetItemCount();

oidstr.Format("%d",num);

oidstr="共取回"+oidstr+"个对象";

pF->m_wndStatusBar.SetPaneText(0,oidstr);

}

五.参考资料

Visual C++开发基于SNMP网络管理软件(含盘),作者: 任相臣,徐䶮,武孟军,

出版社: 人民邮电出版社,2007

服务器代理设置与MIB信息获取实验报告,MIB浏览器的设计试验报告相关推荐

  1. java商品信息管理实验报告_java学生信息管理系统实验报告

    java学生信息管理系统实验报告 JAVA 程序设计实验报告学 号:姓 名: 班 级: 实验.Java 课程设计--------学生信息管理系统一.实验目的 1. 掌握 Java 基本语法2. 理解面 ...

  2. 计算机模型机设计实验报告,计算机组成原理课程设计实验报告-基本模型机设计与实现...

    计算机组成原理课程设计实验报告-基本模型机设计与实现 (12页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.90 积分 计 算 机 组 成 原 理实 ...

  3. 计算机组成原理实验单周期处理,计算机组成原理实验实验报告-单周期cpu设计...

    计算机组成原理实验实验报告-单周期cpu设计 (16页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 计算机组成原理实验计算机组成原理实验 ...

  4. 计算机组成原理模型机设计实验总结,计算机组成原理课程设计实验报告-基本模型机设计与实现.docx...

    计算机组成原理课程设计实验报告-基本模型机设计与实现 计 算 机 组 成 原 理 实 验 报 告 评 语: 成绩 教 师: 年 月 日 班 级: 1403011 学 号: 140301124 姓 名: ...

  5. 计算机接口信息获取实验,《计算机接口技术》实验指导资料.doc

    <计算机接口与通信技术> 实 验 指 导 书 前 言 实验总体目标 掌握本课程涉及的所有硬件接口的结构和工作原理,掌握利用汇编语言设计接口驱动程序或通信程序的方法,掌握基于TPC实验箱的软 ...

  6. c语言学生信息管理系统实验报告

    一.问题描述 题目:学生信息管理系统设计 功能:学生信息管理系统设计,每个学生信息作为一条记录,包括姓名.学号.性别.年龄. 系统要求实现以下功能: 1.增:录入学生信息(包括学生学号.姓名.性别.年 ...

  7. 计算机组成原理课程实验报告,计算机组成原理课程设计实验报告

    <计算机组成原理课程设计实验报告>由会员分享,可在线阅读,更多相关<计算机组成原理课程设计实验报告(18页珍藏版)>请在人人文库网上搜索. 1.计算机组成原理课程设计实验报告( ...

  8. 交换机的基本配置实验报告_无线网络设计配置即实验报告

    工程师ACK接到一个小型图书馆的网络组建项目,根据目前流行的网络组建以及项目地点的使用需要便捷性,采用AC控制的瘦AP模式.不需要AC来管理网络的AP是胖AP需要单独配置,有多少个AP就要配置多少次. ...

  9. c++语言程序设计教程与实验实验报告,C++程序设计课程设计实验报告—网络五子棋...

    C++程序设计课程设计实验报告-网络五子棋 计算机学院 实验报告 课程名称: C++程序设计课程设计 开课学期: 2010-2011学年第2学期 院 班: 计算机学院 093 指导老师: 项目题目: ...

最新文章

  1. 一次线上 JVM 调优实践,FullGC 40 次/天到 10 天一次的优化过程
  2. FPGA从Xilinx的7系列学起(3)
  3. go语言for的三种形式
  4. 打造自己的XP+SP3无人值守安装光盘
  5. 监听url地址栏变化
  6. 默认地址路径修改_修改Docker默认路径
  7. 腾讯云首次披露云原生智能数据湖全景图,数据湖之争再起波澜
  8. 微软开源深度学习优化库 DeepSpeed 连登 GitHub 趋势榜!
  9. java项目学习_一个Java项目的学习
  10. 北京大学计算机801考试大纲,2019年中国科学院大学801高等代数考研初试大纲
  11. linux 截屏_如何在Linux上截图
  12. 【云原生架构】阿里云 —— 主要架构模式
  13. java内存模型JMM理解整理
  14. 金仓数据库 KingbaseES 插件参考手册(23. dbms_utility)
  15. python与按键精灵哪个好_UiBot和按键精灵哪个强大,有什么区别?
  16. 主机插耳机没声音问题
  17. 006 研究生学信网的电子注册备案表在哪里弄
  18. kafka的offset是个什么鬼。。
  19. 京东区块链技术实践白皮书2020
  20. 数据库常用命令及关键字

热门文章

  1. 系列二:最全微商城营销36计!
  2. 快速排序的递归算法C语言
  3. 雷达副瓣对消的matlab程序,动目标显示与脉冲多普勒雷达(MATLAB程式设计)
  4. web————http(报文详解篇)
  5. 运动控制系统之调速系统
  6. 全球第四大航空南方航空与阿里云合作,成首家云上航空公司
  7. 常见三维文件格式之IGES
  8. 【Spring Cloud 11】软件架构设计
  9. 2011-2019,巴塞罗那不相信眼泪
  10. intellij IDEA修改快捷键以及添加菜单快捷键