Salut tout le monde,
Je viens vers vous car j'ai un soucis dans du code que j'ai repris avec un thread qui ne se termine pas.
Voilà mon programme fonctionne comme ceci :
Je lui file un liste d'adresses IP (environ 2000)
Il va interroger ces adresses pour y récupérer une page web grâce à 200 threads simultanés (qu'il stocke dans une collection)
Ensuite il parse la page reçue pour affecter des variables.
Tout fonctionne sur 1999 IP, car même lorsqu'elles ne répondent pas il y a un timer qui permet une fois qu'il est atteint de ne plus attendre le résultat du thread et le supprime de ma collection.
Le problème c'est qu'avec une adresse IP le comportement est bizarre, le ping fonctionne mais l'accès à cette page web n'arrive jamais, même via un navigateur je n'arrive pas à avoir de réponse, même pas le timeout d'IE par exemple.
Donc je cherche un moyen de mettre un timer dans la récupération de cette page pour que au bout de 1 minute par exemple le thread se kill tout seul. Voici le bout de code qui me permet de se connecter à l'IP puis de récupérer la page :
Merci de votre aide!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 public void checkFirmware(String Error) { try { com.meterware.httpunit.WebConversation wc = new WebConversation(); wc.setAuthorization(data.login, data.password); wc.set_connectTimeout(0); wc.set_readTimeout(0); String host = data.ip; int timeOut = 120000; // I recommend 3 seconds at least boolean status = InetAddress.getByName(host).isReachable(timeOut); if (status) { WebRequest req = new GetMethodWebRequest("http://" + data.ip + "/info_data.htm"); //Lors du bug la ligne suivante ne répnd jamais WebResponse resp = wc.getResponse(req); int IndexFirm = resp.getText().indexOf("info_other_value"); String SsChaine = resp.getText().substring(IndexFirm,IndexFirm + 50).replace ("'",""); ....... } } catch (Exception e) { System.err.println("Impossible de récuperer les valeurs de l'IP : " + data.ip + System.getProperty("line.separator" )); parent.removeThread(this); } }
Partager