Je dois envoyer des demandes/recevoir des réponses à plusieurs agents snmp à partir d'un seul processus client/gestionnaire. J'ai implémenté client/agent à base ci-dessous urls: http://www.jitendrazaa.com/blog/java/snmp/create-snmp-client-in-java-using-snmp4j/http://www.jitendrazaa.com/blog/java/snmp/creating-snmp-agent-server-in-java-using-snmp4j/Comment un client snmp devrait-il recevoir des réponses de plusieurs agents snmp?
Pour envoyer une demande à un agent, ce qui suit est réalisée pour chaque serveur:
TransportMapping transport = new DefaultUdpTransportMapping();
snmp = new Snmp(transport);
transport.listen();
...
pdu.setType(PDU.GET);
// communityTarget contains server target address.
ResponseEvent event = snmp.send(pdu, communityTarget, null);
Afin de recevoir des réponses à partir des serveurs, dois-je effectuer un transport.listen() séparé pour chaque serveur? ou créer un nouvel objet TransportMapping et Snmp pour chaque serveur?
Je ne comprends pas comment le processus client peut savoir quel serveur a renvoyé la réponse? ... puisque chaque fois que transport.listen() est appelée, l'adresse du port d'écoute (transport.getListenAddress()) est la même. et 1 port udp supplémentaire est répertorié (netstat).
J'ai l'intention d'interroger chaque serveur à partir d'un thread d'arrière-plan différent (afin que l'intervalle d'interrogation puisse être configuré).
Merci
Avec l'api synchrone, suis-je raison de penser que si j'envoie des demandes/réponses de différents threads, l'envoi d'un SNMP synchrone requête/réponse de 1 thread ne doit pas bloquer la requête/réponse synchrone d'un autre thread? c'est-à-dire qu'ils peuvent être envoyés simultanément? –
où chaque thread interroge un périphérique différent –
C'est correct. Chaque thread agit indépendamment. SNMP4J est thread-safe http://www.snmp4j.org/html/faq.html – Oliver