亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#簡單實現SNMP的方法

2020-01-24 01:37:34
字體:
來源:轉載
供稿:網友

本文實例講述了C#簡單實現SNMP的方法。分享給大家供大家參考。具體如下:

/**C# Network Programming by Richard BlumPublisher: Sybex ISBN: 0782141765*/using System;using System.Text;using System.Net;using System.Net.Sockets;public class SimpleSNMP{  public static void Main(string[] argv)  {   int commlength, miblength, datatype, datalength, datastart;   int uptime = 0;   string output;   SNMP conn = new SNMP();   byte[] response = new byte[1024];   Console.WriteLine("Device SNMP information:");   // Send sysName SNMP request   response = conn.get("get", argv[0], argv[1], "1.3.6.1.2.1.1.5.0");   if (response[0] == 0xff)   {     Console.WriteLine("No response from {0}", argv[0]);     return;   }   // If response, get the community name and MIB lengths   commlength = Convert.ToInt16(response[6]);   miblength = Convert.ToInt16(response[23 + commlength]);   // Extract the MIB data from the SNMP response   datatype = Convert.ToInt16(response[24 + commlength + miblength]);   datalength = Convert.ToInt16(response[25 + commlength + miblength]);   datastart = 26 + commlength + miblength;   output = Encoding.ASCII.GetString(response, datastart, datalength);   Console.WriteLine(" sysName - Datatype: {0}, Value: {1}",       datatype, output);   // Send a sysLocation SNMP request   response = conn.get("get", argv[0], argv[1], "1.3.6.1.2.1.1.6.0");   if (response[0] == 0xff)   {     Console.WriteLine("No response from {0}", argv[0]);     return;   }   // If response, get the community name and MIB lengths   commlength = Convert.ToInt16(response[6]);   miblength = Convert.ToInt16(response[23 + commlength]);   // Extract the MIB data from the SNMP response   datatype = Convert.ToInt16(response[24 + commlength + miblength]);   datalength = Convert.ToInt16(response[25 + commlength + miblength]);   datastart = 26 + commlength + miblength;   output = Encoding.ASCII.GetString(response, datastart, datalength);   Console.WriteLine(" sysLocation - Datatype: {0}, Value: {1}", datatype, output);   // Send a sysContact SNMP request   response = conn.get("get", argv[0], argv[1], "1.3.6.1.2.1.1.4.0");   if (response[0] == 0xff)   {     Console.WriteLine("No response from {0}", argv[0]);     return;   }   // Get the community and MIB lengths   commlength = Convert.ToInt16(response[6]);   miblength = Convert.ToInt16(response[23 + commlength]);   // Extract the MIB data from the SNMP response   datatype = Convert.ToInt16(response[24 + commlength + miblength]);   datalength = Convert.ToInt16(response[25 + commlength + miblength]);   datastart = 26 + commlength + miblength;   output = Encoding.ASCII.GetString(response, datastart, datalength);   Console.WriteLine(" sysContact - Datatype: {0}, Value: {1}",       datatype, output);   // Send a SysUptime SNMP request   response = conn.get("get", argv[0], argv[1], "1.3.6.1.2.1.1.3.0");   if (response[0] == 0xff)   {     Console.WriteLine("No response from {0}", argv[0]);     return;   }   // Get the community and MIB lengths of the response   commlength = Convert.ToInt16(response[6]);   miblength = Convert.ToInt16(response[23 + commlength]);   // Extract the MIB data from the SNMp response   datatype = Convert.ToInt16(response[24 + commlength + miblength]);   datalength = Convert.ToInt16(response[25 + commlength + miblength]);   datastart = 26 + commlength + miblength;   // The sysUptime value may by a multi-byte integer   // Each byte read must be shifted to the higher byte order   while(datalength > 0)   {     uptime = (uptime << 8) + response[datastart++];     datalength--;   }   Console.WriteLine(" sysUptime - Datatype: {0}, Value: {1}",       datatype, uptime);  }}class SNMP{  public SNMP()  {  }  public byte[] get(string request, string host, string community, string mibstring)  {   byte[] packet = new byte[1024];   byte[] mib = new byte[1024];   int snmplen;   int comlen = community.Length;   string[] mibvals = mibstring.Split('.');   int miblen = mibvals.Length;   int cnt = 0, temp, i;   int orgmiblen = miblen;   int pos = 0;   // Convert the string MIB into a byte array of integer values   // Unfortunately, values over 128 require multiple bytes   // which also increases the MIB length   for (i = 0; i < orgmiblen; i++)   {     temp = Convert.ToInt16(mibvals[i]);     if (temp > 127)     {      mib[cnt] = Convert.ToByte(128 + (temp / 128));      mib[cnt + 1] = Convert.ToByte(temp - ((temp / 128) * 128));      cnt += 2;      miblen++;     } else     {      mib[cnt] = Convert.ToByte(temp);      cnt++;     }   }   snmplen = 29 + comlen + miblen - 1; //Length of entire SNMP packet   //The SNMP sequence start   packet[pos++] = 0x30; //Sequence start   packet[pos++] = Convert.ToByte(snmplen - 2); //sequence size   //SNMP version   packet[pos++] = 0x02; //Integer type   packet[pos++] = 0x01; //length   packet[pos++] = 0x00; //SNMP version 1   //Community name   packet[pos++] = 0x04; // String type   packet[pos++] = Convert.ToByte(comlen); //length   //Convert community name to byte array   byte[] data = Encoding.ASCII.GetBytes(community);   for (i = 0; i < data.Length; i++)   {     packet[pos++] = data[i];   }   //Add GetRequest or GetNextRequest value   if (request == "get")     packet[pos++] = 0xA0;   else     packet[pos++] = 0xA1;   packet[pos++] = Convert.ToByte(20 + miblen - 1); //Size of total MIB   //Request ID   packet[pos++] = 0x02; //Integer type   packet[pos++] = 0x04; //length   packet[pos++] = 0x00; //SNMP request ID   packet[pos++] = 0x00;   packet[pos++] = 0x00;   packet[pos++] = 0x01;   //Error status   packet[pos++] = 0x02; //Integer type   packet[pos++] = 0x01; //length   packet[pos++] = 0x00; //SNMP error status   //Error index   packet[pos++] = 0x02; //Integer type   packet[pos++] = 0x01; //length   packet[pos++] = 0x00; //SNMP error index   //Start of variable bindings   packet[pos++] = 0x30; //Start of variable bindings sequence   packet[pos++] = Convert.ToByte(6 + miblen - 1); // Size of variable binding   packet[pos++] = 0x30; //Start of first variable bindings sequence   packet[pos++] = Convert.ToByte(6 + miblen - 1 - 2); // size   packet[pos++] = 0x06; //Object type   packet[pos++] = Convert.ToByte(miblen - 1); //length   //Start of MIB   packet[pos++] = 0x2b;   //Place MIB array in packet   for(i = 2; i < miblen; i++)     packet[pos++] = Convert.ToByte(mib[i]);   packet[pos++] = 0x05; //Null object value   packet[pos++] = 0x00; //Null   //Send packet to destination   Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram,            ProtocolType.Udp);   sock.SetSocketOption(SocketOptionLevel.Socket,           SocketOptionName.ReceiveTimeout, 5000);   IPHostEntry ihe = Dns.Resolve(host);   IPEndPoint iep = new IPEndPoint(ihe.AddressList[0], 161);   EndPoint ep = (EndPoint)iep;   sock.SendTo(packet, snmplen, SocketFlags.None, iep);   //Receive response from packet   try   {     int recv = sock.ReceiveFrom(packet, ref ep);   } catch (SocketException)   {     packet[0] = 0xff;   }   return packet;  }  public string getnextMIB(byte[] mibin)  {   string output = "1.3";   int commlength = mibin[6];   int mibstart = 6 + commlength + 17; //find the start of the mib section   //The MIB length is the length defined in the SNMP packet   // minus 1 to remove the ending .0, which is not used   int miblength = mibin[mibstart] - 1;   mibstart += 2; //skip over the length and 0x2b values   int mibvalue;   for(int i = mibstart; i < mibstart + miblength; i++)   {     mibvalue = Convert.ToInt16(mibin[i]);     if (mibvalue > 128)     {      mibvalue = (mibvalue/128)*128 + Convert.ToInt16(mibin[i+1]);      //ERROR here, it should be mibvalue = (mibvalue-128)*128 + Convert.ToInt16(mibin[i+1]);      //for mib values greater than 128, the math is not adding up correctly        i++;     }     output += "." + mibvalue;   }   return output;  }}

希望本文所述對大家的C#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
播播国产欧美激情| 国外成人在线视频| 高清欧美电影在线| 国产精品欧美一区二区| 亚洲欧美一区二区三区在线| 红桃视频成人在线观看| 亚洲97在线观看| 国产精品pans私拍| 国产精品久久久久av免费| 国产精品爽爽爽爽爽爽在线观看| 国产精品久久久久久婷婷天堂| 中文字幕欧美精品日韩中文字幕| 久久国产精品久久久久| 尤物yw午夜国产精品视频| 久久福利视频导航| 国产欧美精品久久久| 中文字幕精品影院| 成人高清视频观看www| 久久久亚洲欧洲日产国码aⅴ| xxx一区二区| 久久香蕉国产线看观看av| 精品国产户外野外| 日韩中文字幕视频| 久久久国产精品一区| 国产精品夜间视频香蕉| 欧美激情xxxx性bbbb| 亚洲精品欧美日韩专区| 在线国产精品播放| 亚洲欧美激情另类校园| 91高潮在线观看| 久久久最新网址| 国产精品草莓在线免费观看| 亚洲第一中文字幕在线观看| 夜夜狂射影院欧美极品| 久久av在线播放| 日韩av网站大全| 亚洲精品久久久久久久久久久| 亚洲免费福利视频| 97国产成人精品视频| 成人欧美一区二区三区在线湿哒哒| 日本欧美在线视频| 亚洲最大激情中文字幕| 不用播放器成人网| 97色在线观看免费视频| 亚洲欧美日韩久久久久久| 国产91在线播放| 久久国产视频网站| 成人高清视频观看www| 一夜七次郎国产精品亚洲| 97碰碰碰免费色视频| 96sao精品视频在线观看| 欧美黄色片在线观看| 国产成人小视频在线观看| 国产亚洲日本欧美韩国| 久久精品国产欧美亚洲人人爽| 亚洲国产精品久久久久| 日韩精品小视频| 欧美中文字幕视频在线观看| 亚洲美女av在线播放| 久久免费视频在线观看| 欧美日韩国产综合新一区| 精品美女永久免费视频| 日韩高清电影免费观看完整版| 91av在线播放| 成人午夜在线观看| 夜夜躁日日躁狠狠久久88av| 欧美在线中文字幕| 国产精品久久久久久久久久久久| 国产成人avxxxxx在线看| 欧美色欧美亚洲高清在线视频| 久久成人免费视频| 97av在线播放| 欧美多人乱p欧美4p久久| 亚洲性视频网址| 视频一区视频二区国产精品| 狠狠爱在线视频一区| 成人欧美一区二区三区黑人孕妇| 亚洲精品自产拍| 美女性感视频久久久| 日韩久久免费电影| 91精品国产高清久久久久久| 欧美极品少妇xxxxⅹ免费视频| 91福利视频在线观看| 国产精品免费久久久久影院| 国产偷国产偷亚洲清高网站| 78m国产成人精品视频| 久久精品免费电影| 亚洲美女激情视频| 久久久久久久一区二区| 色噜噜狠狠狠综合曰曰曰88av| 成人xxxxx| 一本一本久久a久久精品牛牛影视| 欧美专区第一页| 亚洲国产另类久久精品| 日本精品一区二区三区在线| 欧美成人网在线| 国产精品尤物福利片在线观看| 国产精品久久久久久久久久久新郎| 日本伊人精品一区二区三区介绍| 日韩美女免费线视频| 国产精品久久久亚洲| 欧美日韩在线另类| 精品国产网站地址| 成人免费福利在线| 成人欧美一区二区三区黑人孕妇| 亚洲国产精品电影在线观看| 久久精品亚洲国产| 欧美激情第一页xxx| 精品国产鲁一鲁一区二区张丽| 国产欧美精品日韩精品| 国产精品久久久久久久久影视| 欧美日韩高清区| 另类图片亚洲另类| 亚洲自拍高清视频网站| 欧美亚洲另类激情另类| 亚洲成人av在线播放| 欧美大码xxxx| 黄色成人在线免费| 国产精品久久久久久超碰| 成人欧美一区二区三区在线| 九九热r在线视频精品| 亚洲成人av中文字幕| 国产专区欧美专区| 91av网站在线播放| 久久九九热免费视频| 成人h视频在线观看播放| 欧美日韩在线观看视频小说| 国产乱肥老妇国产一区二| 亚洲人在线视频| 久久天天躁狠狠躁夜夜av| 日韩av网址在线观看| 国产精品夜间视频香蕉| 欧美床上激情在线观看| 欧美激情第1页| 亚洲aaaaaa| 国产激情久久久久| 日韩大胆人体377p| 久久久在线观看| 热99精品里视频精品| 日韩风俗一区 二区| 欧美国产乱视频| 欧美午夜精品伦理| 午夜精品国产精品大乳美女| 成人免费黄色网| 欧美精品电影免费在线观看| 欧美一级黑人aaaaaaa做受| 亚洲国产精品成人va在线观看| 日本精品视频在线播放| 最新国产成人av网站网址麻豆| 欧美人与性动交a欧美精品| 91麻豆桃色免费看| 欧美另类极品videosbestfree| 青草青草久热精品视频在线观看| 日韩欧美亚洲成人| 欧美丰满少妇xxxxx做受| 国产精品视频26uuu| 久久亚洲综合国产精品99麻豆精品福利| 久久久免费高清电视剧观看| 日韩中文字幕av| 欧美日韩亚洲激情| 另类专区欧美制服同性| 国内精品久久久久久| 亚洲成人精品视频| 亚洲欧美日本另类|