Réception UDP, passer un tour de boucle
Bonjour,
Voici la situation : je me connecte successivement à différents serveurs via une socket UDP au travers d'une boucle afin de récupérer certaines informations. Cependant il se peut que dans certains serveurs ne soient pas en route. Est-il possible de définir un temps d'attente max pour la réception pour "esquiver" un tour de boucle et ainsi continuer à parcourir les serveurs tout en gardant les informations obtenues avant et après le passage par le serveur "éteint" ?
voici mon bout de code qui vous aidera sans doute à comprendre :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| //shop est la liste des serveurs
while (shop.hasNext())
{
String currentShop = shop.next() ;
out.print("<form action='AdminManager'>Boutique " + currentShop);
out.print("<input type='hidden' name='action' value='validate' />");
out.print("<input type='hidden' name='port' value='"+ displayShops.gs.getPortCommande(currentShop) +"' />");
DatagramPacket packet = new DatagramPacket(message,message.length,
new InetSocketAddress("localhost", displayShops.gs.getPortCommande(currentShop)));
//on demande au serveur de nous envoyer la liste
socket.send(packet);
//on se prepare a recevoir
byte[] reponse = new byte[1024] ;
packet = new DatagramPacket(reponse,reponse.length);
try
{
socket.receive(packet);
doc = sxb.build(new ByteArrayInputStream(packet.getData(),packet.getOffset(),(packet.getOffset()+packet.getLength())%1024));
racine = doc.getRootElement();
Iterator<Element> commandes = racine.getChildren("commande").iterator();
while (commandes.hasNext())
{
Element current = commandes.next();
out.print("\t<p><input type='checkbox' name='commande' value='" + current.getChildText("id") +"' /> Commande " + current.getChildText("id") + " " + current.getChildText("date") + "</p>");
}
out.print("<p><input type='submit' value='Valider' /></p></form>");
} catch(JDOMException e){
System.err.println("Erreur lors de la lecture de la reponse du serveur: " + e);
System.exit(-1);
} catch (IOException e) {
System.err.println("(Reception Client) Erreur lors de la reception du message-reponse : " + e);
System.exit(-1);
}
} |
Merci d'avance pour votre aide.