【发布时间】:2016-10-08 15:06:37
【问题描述】:
我正在端口 161 上编写一个 snmp 服务器,它只显示五颗星,我可以通过 snmpget 命令行获取星号,也可以通过 snmpset 设置它们。当我收到字符串中的请求数据包时,我无法将其编码为可读。 snmp 数据包格式以整数表示版本,然后是八位字节字符串,依此类推......
public class MyServer {
public static void main(String[] args) throws Exception
{ DatagramSocket 套接字 = 新的 DatagramSocket(161);
byte[] buffer = new byte[64];
DatagramPacket packet = new DatagramPacket(buffer,buffer.length);
while(true)
{
socket.receive(packet);
byte[] data = packet.getData();
String s=new String(data,"UTF-8");
System.out.println(s+"\t"+packet.getAddress()+"\t"+packet.getPort());
输出有点像这样但陌生!!!
0'公开?
【问题讨论】:
-
SNMP 数据包不是文本,所以你上面的代码 sn -p 是完全错误的。通过 IETF RFC 文档或 snmp4j 等开源库了解协议。