reply
@Amidala:
你的程序沒錯啊,但你測試環境有問題。
1.3.6.1.4.1.9.2.1.8.0是Cisco的oid(具體這個oid是取什么值我也不知道)
但127.0.0.1是你的本機,你不可能在一臺Cisco機器上寫你的Java程序吧?呵呵。
建議找一臺安裝snmp的服務器,或者直接在你的機器上安裝snmp并啟動snmp服務。
以下是我按你的原程序改過的,我測試過了,沒問題。
1
import org.snmp4j.*;
2
import org.snmp4j.transport.*;
3
import java.io.*;
4
import java.util.Vector;
5
6
import org.snmp4j.smi.*;
7
import org.snmp4j.mp.*;
8
import org.snmp4j.event.*;
9
10
public class SnmpBlog
11
{
12
public static void main(String[] args)
13
{
14
try
15
{
16
TransportMapping transport1 ;
17
transport1 = new DefaultUdpTransportMapping();
18
Snmp protocol = new Snmp(transport1);
19
transport1.listen();
20
CommunityTarget myTarget = new CommunityTarget();
21
Address deviceAdd;
22
/**
23
* 192.168.2.149 is a windows2003 server
24
*/
25
deviceAdd = GenericAddress.parse("udp:192.168.2.149/161");
26
myTarget.setAddress(deviceAdd);
27
myTarget.setCommunity(new OctetString("public"));
28
myTarget.setRetries(0);
29
myTarget.setTimeout(5*60);
30
myTarget.setVersion(SnmpConstants.version2c);//org.snmp4j.mp.*;
31
PDU pdu = new PDU();
32
/**
33
* 1.3.6.1.2.1.1.5.0 is sysName oid
34
*/
35
VariableBinding var = new VariableBinding(new OID("1.3.6.1.2.1.1.5.0"));
36
pdu.add(var);
37
pdu.setType(PDU.GET);
38
ResponseEvent response = protocol.send(pdu, myTarget);
39
String sysName = null;
40
if(response.getResponse() != null)
41
{
42
Vector respList = response.getResponse().getVariableBindings();
43
VariableBinding variableV = (VariableBinding)respList.elementAt(0);
44
sysName = variableV.getVariable().toString();
45
}
46
47
System.out.println(sysName);
48
}
49
catch(IOException e)
50
{
51
e.printStackTrace();
52
System.out.println(e.getMessage());
53
}
54
}
55
}

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55
