Липсваща стойност в SNMP

Използвам snmp4j версия 1.10.1 от org.snmp4j и това е кодът на моя trap приемник за улавяне на данни от snmp trap.

public class TrapReceiver extends Thread implements CommandResponder {

//@Autowired
private CarService carService;
List<PDUv1> listPdu = new ArrayList<PDUv1>();
List<PDUv1> temp = new ArrayList<PDUv1>();  
String message = "";
int totReceivedTrap = 0;

public TrapReceiver(CarService carService){
    this.carService = carService;
}

public synchronized void processPdu(CommandResponderEvent cmdRespEvent) {
    PDUv1 pdu = (PDUv1) cmdRespEvent.getPDU();
    if (pdu != null) {
        System.out.println(pdu.getVariableBindings().toString());           
    }
    totReceivedTrap++;
    System.out.println("total received trap "+totReceivedTrap);
}

public void run() {
    while (true) {
        try { 
            this.listen(new UdpAddress("192.168.1.5/162")); //alamat PDU akan listen
        } catch (Exception e) {
            e.printStackTrace();
        } 
    }
}

public synchronized void listen(TransportIpAddress address) throws IOException {
    AbstractTransportMapping transport;
    if (address instanceof TcpAddress) {
        transport = new DefaultTcpTransportMapping((TcpAddress) address);
    } else {
        transport = new DefaultUdpTransportMapping((UdpAddress) address);
    }

    ThreadPool threadPool = ThreadPool.create("DispatcherPool", 10);
    MessageDispatcher mDispathcher = new MultiThreadedMessageDispatcher(
            threadPool, new MessageDispatcherImpl());

    // add message processing models
    mDispathcher.addMessageProcessingModel(new MPv1());
    mDispathcher.addMessageProcessingModel(new MPv2c());

    // add all security protocols
    SecurityProtocols.getInstance().addDefaultProtocols();
    SecurityProtocols.getInstance().addPrivacyProtocol(new Priv3DES());

    // Create Target
    CommunityTarget target = new CommunityTarget();
    target.setCommunity(new OctetString("public"));

    Snmp snmp = new Snmp(mDispathcher, transport);
    snmp.addCommandResponder(this);

    transport.listen();
    message ="Listening on " + address;
    System.out.println(message);

    try {
        this.wait();
    } catch (InterruptedException ex) {
        Thread.currentThread().interrupt();
    }
}

public String getMessage(){
    return this.message;
}   
}

Но една стойност на променлива липсва, стойността на тази променлива е географска ширина и дължина (формат: -903849323.20384;+230349402.03000). И когато хвана данните с помощта на wireshark, разбрах, че стойността също липсва.

Екранната снимка http://www.mediafire.com/view/?kjz1drb9jhda88a http://www.mediafire.com/view/?ov6lqn6u9n669my

Защо данните са нулеви, какво не е наред.


person Mahadi Siregar    schedule 20.02.2013    source източник


Отговори (1)


Ако не виждате стойността в пакета, уловен от wireshark, тогава е напълно валидно да получите нулевата стойност в кода. Какво друго бихте очаквали?

Това изглежда по-вероятно да е проблем/функция на SNMP агента, работещ на устройството (напр. геолокацията не е зададена, GPS сигналът не е наличен и т.н.)

person L.R.    schedule 05.03.2013
comment
Добре благодаря. Съмнявам се, че може би нещо не е наред с моята мрежа. И след проверка, това е причинено от устройство (GPS) - person Mahadi Siregar; 06.03.2013