我想使用android.I簡單的SNMP獲得發現的Java代碼,並嘗試在android.I使用它也重視snmp4j.jar文件android.But我得到了空指針異常,我不得到的,更output.If人對如何在Android的話,請給我建議使用SNMP的任何想法或代碼..SNMP進行Android的
以下是我的代碼,我都試過了,
1 import java.io.IOException;
2 import org.snmp4j.CommunityTarget;
3 import org.snmp4j.PDU;
4 import org.snmp4j.Snmp;
5 import org.snmp4j.TransportMapping;
6 import org.snmp4j.event.ResponseEvent;
7 import org.snmp4j.mp.SnmpConstants;
8 import org.snmp4j.smi.OID;
9 import org.snmp4j.smi.OctetString;
10 import org.snmp4j.smi.UdpAddress;
11 import org.snmp4j.smi.VariableBinding;
12 import org.snmp4j.transport.DefaultUdpTransportMapping;
13 import android.app.Activity;
14 import android.os.Bundle;
15 import android.util.Log;
16 import android.view.View;
17 import android.view.View.OnClickListener;
18 import android.widget.Button;
19 import android.widget.Toast;
20
21 public class SNMPClient extends Activity {
22
23 private static String ipAddress = "127.0.0.1";
24 private static String port = "161";
25 //cmd to request from Server
26 private static String oidValue = "1.3.6.1.2.1.1.5.0";
27 private static int snmpVersion = SnmpConstants.version2c;
28 private static String community = "public";
29
30 public static Snmp snmp;
31 public static CommunityTarget comtarget;
32 static PDU pdu;
33 static OID oid;
34 static VariableBinding req;
35 Button b;
36 private static final String tag = "SNMP CLIENT";
37
38 @Override
39 public void onCreate(Bundle savedInstanceState) {
40 super.onCreate(savedInstanceState);
41 setContentView(R.layout.main);
42
43 System.setProperty("java.net.preferIPv4Stack", "true");
44 System.setProperty("java.net.preferIPv6Addresses", "false");
45
46 b = (Button) findViewById(R.id.getvalue);
47 b.setOnClickListener(new OnClickListener() {
48
49 public void onClick(View v) {
50 // TODO Auto-generated method stub
51 try {
52 sendSnmpRequest(oidValue);
53 } catch (IOException e) {
54 // TODO Auto-generated catch block
55 e.printStackTrace();
56 } catch (Exception e) {
57 // TODO Auto-generated catch block
58 e.printStackTrace();
59 }
60
61 }
62 });
63 }
64
65 private void sendSnmpRequest(String cmd) throws Exception {
66 // Create TransportMapping and Listen
67 TransportMapping transport = new DefaultUdpTransportMapping();
68 transport.listen();
69
70 // Create Target Address object
71 CommunityTarget comtarget = new CommunityTarget();
72 comtarget.setCommunity(new OctetString(community));
73 comtarget.setVersion(snmpVersion);
74 comtarget.setAddress(new UdpAddress(ipAddress + "/" + port));
75 comtarget.setRetries(2);
76 comtarget.setTimeout(1000);
77 // Prepare PDU
78 req = new VariableBinding();
79 OID oid = new OID(cmd);
80 req.setOid(oid);
81 pdu = new PDU();
82 pdu.add(req);
83 Snmp snmp = new Snmp(transport);
84 Log.i(tag ,"Sending Request to Agent...");
85 ResponseEvent response = snmp.get(pdu, comtarget);
86 // Process Agent Response
87 if (response != null) {
88 Log.i(tag,"Got Response from Agent"); //upto this get in Logcat
89 PDU responsePDU = response.getResponse(); //Here get Null response
90 if (responsePDU != null) {
91 int errorStatus = responsePDU.getErrorStatus();
92 int errorIndex = responsePDU.getErrorIndex();
93 String errorStatusText = responsePDU.getErrorStatusText();
94
95 if (errorStatus == PDU.noError) {
96 Log.i(tag,"Snmp Get Response = "
97 + responsePDU.getVariableBindings());
98 Toast.makeText(getApplicationContext(),
99 "Snmp Get Response = " + responsePDU.getVariableBindings(),Toast.LENGTH_LONG).show();
100 } else {
101 Log.i((String) tag,"Error: Request Failed");
102 Log.i(tag,"Error Status = " + errorStatus);
103 Log.i(tag,"Error Index = " + errorIndex);
104 Log.i(tag,"Error Status Text = " + errorStatusText);
105 }
106 } else {
107 Log.i(tag,"Error: Response PDU is null"); // This get in Logcat
108 }
109 } else {
110 Log.i(tag,"Error: Agent Timeout... ");
111 }
112 snmp.close();
113 }}
請任何人有任何解決方案請建議我。在此先感謝.............
在89線獲得空值,所以得到空指針異常.......任何想法或代碼
請提供異常的堆棧跟蹤。它顯示了空指針出現的行號。 – 2012-02-07 15:21:13