Thank you for answer.
So, as far as I understand, this is the expected behavior when SNMP4J closes the TCP connection on error. But how can I verify that SNMP4J has closed it? I want to restart my listener or fix it on some other way on encoding error.
I’ve tried to monitor via TransportStateListener, but the state always the same - STATE_CONNECTED -> STATE_DISCONNECTED_REMOTELY. With TransportListener I also didn’t find any helpful information.
Log when data is correct:
Key is acceptable
Adding operation 1 for: SocketEntry[peerAddress=192.168.190.9/47310,socket=Socket[addr=/192.168.190.9,port=47310,localport=8765],lastUse=Mon Jan 12 20:37:02 MSK 1970,readBufferPosition=-1]
Firing transport state event: org.snmp4j.transport.TransportStateEvent[source=org.snmp4j.transport.DefaultTcpTransportMapping@76182edf,peerAddress=192.168.190.9/47310,newState=1,cancelled=false,causingException=null]
Key is reading
Reading header 6 bytes from 192.168.190.9/47310
Message length is org.snmp4j.transport.MessageLength[headerLength=3,payloadLength=176]
Message completed with 179 bytes and 179 buffer limit
Received message from 192.168.190.9/47310 with length 179: 30:81:b0:02:01:03:30:12:02:04:72:d0:f0:fd:02:04:7f:ff:ff:ff:04:01:03:02:01:03:04:35:30:33:04:08:61:67:65:6e:74:30:30:37:02:01:00:02:01:00:04:09:74:72:61:70:75:73:65:72:31:04:0c:7e:d9:e3:ce:22:79:ff:ed:32:d0:f4:2a:04:08:00:00:03:67:a9:bf:71:bb:04:60:3b:f3:b2:2b:6b:96:09:53:72:0e:10:be:fb:39:88:52:6d:99:03:ee:ff:74:13:2f:57:4f:97:69:99:65:41:8b:d9:39:8b:3c:42:4c:de:f4:e3:64:97:b2:b5:9e:16:ef:47:51:34:12:8e:d9:ee:d7:30:8a:1c:78:d7:08:39:dc:16:3c:72:50:30:ea:8e:46:e1:4a:db:64:1a:40:4e:77:52:77:57:1a:c5:a3:d7:9f:ea:2e:32:a1:48:da:3f:48
Key is readable
Key is reading
SNMPv3 header decoded: msgId=1926295805, msgMaxSize=2147483647, msgFlags=03, secModel=3
Reading header -1 bytes from 192.168.190.9/47310
Socket closed remotely
Firing transport state event: org.snmp4j.transport.TransportStateEvent[source=org.snmp4j.transport.DefaultTcpTransportMapping@76182edf,peerAddress=192.168.190.9/47310,newState=2,cancelled=false,causingException=null]
RFC3412 §7.2.10 - Received PDU is NOT a response or internal class message -> unchanged PduHandle = PduHandle[330693974]
Fire process PDU event: CommandResponderEvent[securityModel=3, securityLevel=3, maxSizeResponsePDU=2147483465, pduHandle=PduHandle[330693974], stateReference=null, pdu=TRAP[{contextEngineID=80:00:1f:88:80:86:d8:70:4a:06:29:a7:56:00:00:00:00, contextName=}, requestID=330693974, errorStatus=0, errorIndex=0, VBS[1.3.6.1.2.1.1.3.0 = 35 days, 21:27:37.23; 1.3.6.1.6.3.1.1.4.1.0 = 1.3.3.3.3.3.3.3; 1.2.2.2.2.2.2 = 1.1.1.1]], messageProcessingModel=3, securityName=trapuser1, processed=false, peerAddress=192.168.190.9/47310, transportMapping=org.snmp4j.transport.DefaultTcpTransportMapping@76182edf, tmStateReference=null]
Log when error:
Key is acceptable
Adding operation 1 for: SocketEntry[peerAddress=192.168.190.9/47316,socket=Socket[addr=/192.168.190.9,port=47316,localport=8765],lastUse=Mon Jan 12 20:37:22 MSK 1970,readBufferPosition=-1]
Firing transport state event: org.snmp4j.transport.TransportStateEvent[source=org.snmp4j.transport.DefaultTcpTransportMapping@76182edf,peerAddress=192.168.190.9/47316,newState=1,cancelled=false,causingException=null]
Key is reading
Reading header -1 bytes from 192.168.190.9/47316
Socket closed remotely
Firing transport state event: org.snmp4j.transport.TransportStateEvent[source=org.snmp4j.transport.DefaultTcpTransportMapping@76182edf,peerAddress=192.168.190.9/47316,newState=2,cancelled=false,causingException=null]