l-o
Je suis en train de développer une application qui doit me permettre de me connecter aux différents serveurs vns dispos sur mon réseau. Pour cela, j'aimerais scanner mon sous-réseau pour voir quels sont les hôtes dispos.
Je ne sais pas trop quelle méthode est la plus appropriée pour ça... ayant utilisé nmap, je me souviens d'affaire de "connexion TCP initiée" (confirmé par une relecture du man). Alors je tente, mais ça marche pas à tous les coups et sans réel raison... enfin du moins, je n'arrive pas à me les expliquer.
Tout d'abord le code :
Code :
- wxIPV4address addrLocale;
- wxString reseauLocal;
- wxIPV4address addrDistante;
- wxArrayString listeServeursVNC;
- wxSocketClient sktcltVNC;
- //détection du réseau
- this->lstctrlServeursVNC->Clear();
- addrLocale.AnyAddress();
- addrLocale.Hostname(addrLocale.Hostname()); // récupère l'IP du localhost
- reseauLocal = addrLocale.IPAddress().BeforeLast('.'); // sauvegarde l'IP du sous-réseau
- this->txtctrllblReseau->SetValue(reseauLocal + ".0" );
- //scan du sous-réseau
- for(int i=90 ; i<=99 ; i++) {
- wxString addrTest = reseauLocal + "." + wxString::Format("%d", i); // construit l'IP à tester
- addrDistante.Hostname(addrTest);
- addrDistante.Service(5800);
- sktcltVNC.Connect(addrDistante, false); // ouvre un socket sur l'IP distante
- sktcltVNC.WaitOnConnect(0,10); // attends 10ms
- if(sktcltVNC.IsConnected()) listeServeursVNC.Add(addrTest); // stocke l'IP si la connexion a eu lieue
- sktcltVNC.Close();
- }
- this->lstctrlServeursVNC->InsertItems(listeServeursVNC, 0);
|
Comme vous pouvez le voir, je scanne sur la plage [90;99] et ça marche, mais pas à tous les coups. Si je scanne sur une plus grande plage ([80;99]), ça ne marche jamais. J'ai aussi essayé divers temps de connexion (jusqu'à 5 secondes - dans le programme, à 10ms ça marche pas plus mal qu'à 1s)
Je ne comprends pas trop...
Où merde-je ? Ma solution est-elle inadéquate ?
Merci d'avance.
Message édité par trevor le 07-04-2007 à 01:45:20
---------------
TReVoR - http://dev.arqendra.net - http://info.arqendra.net