久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3918|回復: 0
打印 上一主題 下一主題
收起左側

MIB瀏覽器的設計試驗報告

[復制鏈接]
跳轉到指定樓層
樓主
ID:108615 發表于 2016-3-14 15:48 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
一.實驗目的
1、基本掌握了 MIB的結構;
2、掌握C++環境下SNMP編程的基本方法。         

二.實驗環境

1、VC++ 6.0
2、《Visual C++開發基于SNMP網絡管理軟件》書的第七章內容和源代碼,其主要源代碼在工程文件的MibBrowserView.cpp中。

三.實驗要求

由于MibBrowser.dsw給出的源程序代碼中,每次只能得到一個對象的值,因此本實驗的要求就是:修改GetGetnext操作的顯示結果,使其能夠把一次性把一個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

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美第一页 | 日本一区二区不卡视频 | 成人国内精品久久久久一区 | a级黄色毛片免费播放视频 国产精品视频在线观看 | 青青草一区二区三区 | 国产精品美女久久久久aⅴ国产馆 | 波多野结衣一区二区三区在线观看 | 亚洲综合区 | 成人免费毛片片v | 免费精品一区 | 精品久久久久久久久久久久久久 | 国产91丝袜在线18 | 成av在线 | 中文字幕国产 | 日韩成人在线免费观看 | 亚洲精品久久久久久国产精华液 | 国产一区二区三区在线 | 久久精品手机视频 | 亚洲一区在线日韩在线深爱 | 成人国产在线观看 | 免费国产精品久久久久久 | 伦理二区 | 国产免费一区二区 | 精品国产欧美一区二区三区不卡 | 欧美大片一区 | 黄色网址在线免费观看 | 久久久久久免费看 | 亚洲午夜在线 | 精品久久精品 | 国产一区二区三区 | 天天草天天干 | 成人精品久久 | 色一情一乱一伦一区二区三区 | 欧美极品少妇xxxxⅹ免费视频 | 玖玖视频国产 | 天堂成人国产精品一区 | 日韩在线精品视频 | 九九久久精品 | 丝袜 亚洲 另类 欧美 综合 | 国产一级淫片免费视频 | 喷潮网站 |