- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想在 android 中使用简单的 snmp get。我找到了 java 的代码并尝试在 android 中使用它。我还附加了 snmp4j.jar 文件用于 android。但是我得到了 NullPointer 异常,我没有得到输出。如果有人对如何在 android 中使用 snmp 有任何想法或代码,请给我建议。
以下是我试过的代码,
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 行获取空值,因此获取 NUllPointer 异常......任何想法或代码
câu trả lời hay nhất
từResponseEvent.getResponse()文档(强调我的):
Returns: a PDU instance if a response has been received. If the request timed out then null will be returned.
现在显然您可以看到您在该行得到了 vô giá trị
响应:
PDU responsePDU = response.getResponse();
最有可能因为您正尝试通过 SNMP 获取 Android 的本地主机地址,即:
private static String ipAddress = "127.0.0.1";
private static String port = "161";
// ...
comtarget.setAddress(new UdpAddress(ipAddress + "/" + port));
这没有意义,因为您的 Android 可能没有本地运行的 SNMP 服务,那么您如何从未运行的 SNMP 服务获得响应?
尝试将 ipAddress
更改为您要连接的设备的地址。
关于android - Android 版,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9175826/
Gần đây tôi đã thêm một số .gif vào /drawable để tôi có thể sử dụng chúng bằng các nút. Điều này hoạt động tốt (không có lỗi). Bây giờ khi tôi xây dựng lại/chạy ứng dụng của mình, tôi gặp lỗi sau: Error: Gradle: Execu
Có cách nào trong Android để trả lại đường dẫn tới dữ liệu bộ nhớ trong không? Tôi có 2 điện thoại thông minh Android (Samsung s2 và s7 edge) mà tôi đã cài đặt một ứng dụng. Tôi muốn sử dụng sqlit nằm trong đường dẫn này
Câu hỏi này đã có câu trả lời ở đây: Sự khác biệt giữa "?android:" và "@android:" trong bố cục android xml f
Tôi chỉ muốn biết sự khác biệt thực sự giữa điện thoại phát triển Android, điện thoại Android thông thường và điện thoại đã root Android. Chúng tôi không thể mua bộ công cụ phát triển từ các cửa hàng thực tế hoặc những nơi khác ngoài thị trường Android
Tôi đang cố gắng nâng cao dự án này kể từ khi cập nhật Gradle. Đây là một dự án nhóm và nó sử dụng plugin android-apt. Tôi đã thực hiện các thay đổi cú pháp cần thiết (biên dịch->triển khai và apt->bộ xử lý chú thích) nhưng trình biên dịch vẫn cho tôi biết rằng có
Tôi mới sử dụng Android và kotlin, vì vậy vui lòng giải quyết một vấn đề rất đơn giản! Tôi đã tạo một ứng dụng cơ bản bằng cách sử dụng các thành phần kiến trúc điều hướng, sử dụng thanh điều hướng ở dưới cùng và ba tùy chọn điều hướng. Mỗi tùy chọn điều hướng trỏ đến một đoạn dành riêng
Tôi hiện đang sử dụng SDK chính thức của Facebook dành cho Android. Tôi hiện đang sử dụng ứng dụng mẫu nâng cao nhưng tôi không biết cách làm cho ứng dụng này có được tường/luồng/trạng thái ứng dụng thay vì người dùng đã đăng nhập. Điều này có thể thực hiện được không? trong tình huống đó
Tôi gặp sự cố khi tải xuống tệp, tôi có thể tải tệp xuống trong trình giả lập nhưng nó không hoạt động trên điện thoại của tôi. Tôi đã xác định quyền truy cập Internet và ghi vào thẻ SD. Tôi có một tệp tài liệu trên máy chủ nếu người dùng nhấp vào tải xuống. Nó tải tập tin. Điều này hoạt động tốt trong trình mô phỏng nhưng
Câu hỏi này đã có câu trả lời ở đây: Sự khác biệt giữa trọng lực và bố cục_trọng lực trong Android là gì? (22 câu trả lời) Đóng 9
Bất cứ ai có thể cho tôi biết bộ nhớ cache của ứng dụng và bộ nhớ cache của ứng dụng là gì vì khi chúng ta nói về ứng dụng làm sạch bộ nhớ cache, khái niệm làm sạch bộ nhớ cache là làm sạch bộ nhớ cache của ứng dụng hoặc như bộ nhớ chính quản lý bộ nhớ, RAM, bộ nhớ cache là khác nhau và theo như tôi biết, chậm
Giả sử rằng ứng dụng Foo và Eggs nằm trên cùng một thiết bị Android. Một trong hai ứng dụng có thể nhận danh sách tất cả các ứng dụng trên thiết bị. Ứng dụng có thể biết liệu ứng dụng khác đã chạy chưa và đã chạy trong bao lâu? câu trả lời hay nhất
Tôi hơi bối rối, tôi chỉ thấy các ví dụ về việc chuyển từ Android sang PC hoặc từ Android sang PC. Tôi cần tạo một ứng dụng Android kết nối từ hai điện thoại (android) để trò chuyện video. Tôi đang suy nghĩ, tôi biết
Được sử dụng để khóa màn hình theo chương trình bằng Android. Tôi đã có một số ý tưởng hay từ các câu hỏi Stackoverflow trước đây về vấn đề này và tôi vẫn ổn, nhưng khi tôi chạy mã, không có ngoại lệ và không có lỗi. Ngoài ra, màn hình không bị khóa. Vui lòng nhập đoạn này
Văn bản: android:layout_alignParentStart Nếu đúng, làm cho cạnh bắt đầu của chế độ xem này khớp với cạnh bắt đầu
Tôi không biết sự khác biệt giữa hai thuộc tính và chiều cao này. Lấy TextView làm ví dụ, điều gì xảy ra nếu tôi đặt bố cục của nó thành quấn_content và chiều rộng của nó thành 50 nhúng? câu trả lời hay nhất
Mối quan hệ giữa hai thuộc tính này là gì? Nếu tôi có android:noHistory="true", thì có ích gì khi có android:finishOnTaskLaunch="true" không? Câu trả lời hay nhất giả định rằng ứng dụng của bạn có
Tôi là người mới và đang cố gắng hiểu mã XML sau: Nhìn vào tài liệu trên dev.android.com, nó cho biết "starStyle" là một hằng số trong R.attr, public static cuối cùng
Trong đoạn mã bên dưới, tại sao giao diện của nút radio thay đổi khi tôi đặt android:layout_width="fill_parent" và android:width="fill_parent" tôi đang nói
Thật khó để nói những gì để hỏi ở đây. Câu hỏi không rõ ràng, mơ hồ, không đầy đủ, quá rộng hoặc hùng biện và không thể trả lời hợp lý ở dạng hiện tại. Để được trợ giúp làm rõ vấn đề này để có thể mở lại, hãy truy cập Trung tâm trợ giúp.
Giả sử mình có một hàm fun myFunction(name:String, email:String){}, khi mình gọi hàm này là myFunction('Ali', 'ali@test.com ') thì sao
Tôi là một lập trình viên xuất sắc, rất giỏi!