[SNMP4J] Setting Local port in DefaultUdpTransport causes null responses.
Giuseppe Sarno
giuseppe.sarno at genband.com
Wed Mar 2 23:21:25 CET 2011
Hello,
new to SNMP and to this API.
I am trying to use code snippet from http://www.snmp4j.org/doc/org/snmp4j/Snmp.html to build a SNMP manager that sends a SET between 2 nodes (SNMP4J 1.11.2).
I use Java executors to invoke the task that will actually perform the work. I noticed that this works ok if I don't set the LocalPort in the UDP transport.
I actually would like to fix the port to a specific value so I set it in the transport constructor. Unfortunately after this change the PDU response is always "null".
Messages are correctly sent and replied back (checked with wireshark). I am not too sure whether there is any threading issue as the transport is bound to a specific port or simply my code is not correct.
Can anybody please let me know if there is any problem with this approach and what the problme could be ?
Thanks.
The task will:
1) Creates DefaultUdpTransportMapping (note I need to set the local port and I to add to set the option "reuse" to true as I was getting bind exception)
DefaultUdpTransportMapping(new UdpAddress(InetAddress.getLocalHost(),localport),true);
2) Creates community target.
CommunityTarget comtarget = new CommunityTarget();
comtarget.setCommunity(new OctetString(community));
comtarget.setVersion(snmpVersion);
comtarget.setAddress(new UdpAddress(ip + "/" + port));
comtarget.setRetries(0);
comtarget.setTimeout(100);
3) Creates a PDU
PDU pdu = new PDU();
4) Creates SNMP with the UDP transport (above)
Snmp snmp = new Snmp(this.getUDPTransport());
5) Sends and wait for the resposne:
ResponseEvent response = snmp.set(pdu, comtarget);
// Process Agent Response
if (response != null)
{
>> do work <<
}
Excecutor that wraps the code above:
ExecutorService threadExecutor = Executors.newFixedThreadPool( Data.POOL );
for ( int i=1;i<=100000;i++)
{
RunnableTask t = new RunnableTask(Integer.toString(i));
threadExecutor.execute(t);
}
threadExecutor.shutdown(); // shutdown worker threads
}
More information about the SNMP4J
mailing list