- 论坛徽章:
- 0
|
本人在学校公共机房,一台装有linux的pc机,想从该主机访问该子网的路由器的路由信息。(snmp)\r\n \r\n 在Linux上运行一个简单程序,该程序调用MIB库的信息\r\n 弱问下 本机上上没装net snmp,能行吗?\r\n 该程序运行后,没反应,用tcpdump抓包,有包发送,这是什么情况\r\n\r\n《网上转载》\r\n # include 〈stdio.h〉\r\n# include 〈sys/types.h〉\r\n# include 〈sys/socket.h〉\r\n# include 〈netinet/in.h〉\r\n# include 〈netdb.h〉\r\n# define snmp_port 161 /* SNMP UDP 端口号*/\r\n# define destaddress “192. 168. 1.16” /* 访问目标机的IP 地址*/\r\nstruct sockaddr_in dest;\r\nstruct hostent *hp;\r\nint sockfd;\r\nregister int i, n;\r\nint fromlen;\r\nint packsize= 43;\r\nu_char\r\nsendpack [100 ]= {0x30, 0x37, 2, 1, 0, 4, 6, 0x70, 0x75, 0x62, 0x6c,\r\n0x69, 0x63,0xa0, 0x26, 2, 4,0, 0, 0, 0, 2, 1, 0, 2, 1, 0, 0x30, 0x1c,\r\n0x30,0x0c, 6, 8, 0x2b, 6, 1, 2, 1, 1, 1, 0, 5, 0};/* get_ request 报文编码*/\r\nu_char recvpack [150]; /* 收到get_ response 报文编码*/\r\nmain( )\r\n{\r\nif ((hp=gethostbyname(destaddress))== 0)\r\n{\r\n printf (“unknown host”) ;\r\n exit (1) ;\r\n}\r\ndest.sin_family= AF_INET;\r\ndest.sin_port= htons(snmp_port) ;\r\nmemcpy((char*)&dest.sin_addr, (char*)hp->h_addr, hp->h_length) ;\r\nif ((sockfd=socket(AF_INET, SOCK_ DGRAM , 17)) {\r\n printf (“can`t create udp socket”) ;\r\n exit (1) ;\r\n}\r\n/* 以上生成udp 套接字*/\r\ni= sendto (sockfd, sendpack, packsize, 0, (struct sockaddr* )&dest, sizeof (dest)) ;\r\nif(i{\r\n printf (“sendto error”) ;\r\n exit(1);\r\n}\r\nif (i!=packsize)\r\n{\r\n printf(“wrote %d bytes, return= %d”, packsize, i) ;\r\n exit (1)\r\n}\r\n/* 发送udp 报文*/\r\nputs (“receiving now ……”) ;\r\nfromlen= sizeof(dest) ;\r\nif ((n= recvfrom (sockfd, recvpack, sizeof ( recvpack) , 0, (struct sockaddr\r\n*)&dest,&fromlen) ) {\r\n printf (“recv from error!”) ;\r\n exit (1) ;\r\n}\r\n/* 接收udp 报文*/\r\nfor ( i= 0; iprintf (“%X”,recvpack) ;\r\nclose(sockfd) ;\r\n} |
|