Tester un hôte sur le réseau local

Bonjour,


 


J'ai pour projet de développer une application comme Network Radar ou Ip scanner pour ceux qui connaissent mais uniquement dans la barre de mac OS.


 


Après quelques semaines de recherche et de tests avec beaucoup de choses (Simple Ping, Reachability, etc ..) la seule méthode qui marche bien est celle présentée ici : http://www.splinter.com.au/how-to-ping-a-server-in-objective-c-iphone/


 


N'y a t'il pas plus simple ? J'arrive a tester mon LAN mais absolument pas à  récupérer l'adresse de l'hôte qui est vivant sur le réseau avec les méthodes de ce code.


Merci de vos réponses.



 


Réponses

  • CeetixCeetix Membre
    juillet 2013 modifié #2

    J'ai pas bien compris. Tu veux récupérer ton adresse IP ?


     


    (pense te présenter)


  • Merci de ton interêt. Concrètement je cherche à  scanner toutes les IP de mon réseau local et tester si l'hôte répond ou pas.


    Voici mon code : 



    - (void)applicationDidFinishLaunching:(NSNotification *)aNotification
    {

    for (int i = 0; i <= 254; i++)
    {
    NSMutableString* ipp = [NSMutableString stringWithString: @192.168.0.];
    NSString* nbr = [NSString stringWithFormat:@%d, i];
    [ipp appendString: nbr];
    [self tapPing:ipp];
    NSLog(@%@",ipp);
    }

    }

    - (void)tapPing:(NSString*) ip{
    [SimplePingHelper ping:ip target:self sel:@selector(pingResult:)];
    }

    - (void)pingResult:(NSNumber*)success {
    if (success.boolValue) {
    //[Menu addItemWithTitle:@HOST action:nil keyEquivalent:@""];
    NSLog(@UPPPPPPPPPPPPP);
    } else {
    NSLog(@Host is DOWN);
    }

    J'aimerais afficher l'IP de l'hôte dans la méthode pingResult mais je ne sais pas comment faire .. Je débute un peu dans le développement mac OS.


     


    J'utilise les classes disponibles ici : http://www.splinter.com.au/how-to-ping-a-server-in-objective-c-iphone/

  • Commence par te présenter dans la section adéquate histoire qu'on saches ce que l'on peut te répondre.


  • Merci c'est fait je me suis présenté :)


  • Ta classe toute-faite-jai-pas-besoin-de-lire-la-doc-je-fais-du-clic-clic est mal pensé, il ne respect pas le principe des helper object et ne se passe pas en paramètre de la réponse, du coup tu ne peux pas savoir quel objet t'envois une réponse et donc l'adresse d'origine.


     


    Je te recommande de recommancer par les bases si tu veux un temps soit peu comprendre ce que tu fais. Commence par ressortir la doc d'un ping, d'un traceroute, d'un DNS lookup pour comprendre ce que ça fait, lis les sources des commandes UNIX associé et ensuite réfléchit à  comment rendre la chose objet.


     


    J'en conviens, c'est long et chiant comme méthode, mais au moins tu aura appris quelque chose au lieu de jouer les monteurs de meuble Ikea :-)


  • C'est plus l'objective C qui me pose problème je pense. Je vais essayer de voir les bases du dev sous mac alors. Merci de la réponse pour me dire que je fais fausse route ;-)


  • MonsieurPaulMonsieurPaul Membre
    juillet 2013 modifié #8

    Indépendamment de l'Objective-C, de l'architecture MVC et de Cocoa Touch:


     


     - Tu assumes que toute adresse IP intranet commence par "192.168.0", ce qui est loin d'être le cas.


     - Vu comment est construite ta boucle, l'adresse IP générée ne sera plus valide dès la 2eme itération.


  • Bien sur, je sais tout ca. Ce code n'est qu'un "test" qui s'applique pour le moment uniquement qu'au cas spécifique de mon propre sous réseau.


     


    Pour la boucle, il me semble que la deuxième itération serait 192.168.0.1 non ?


  • 192.168.0.01 plutôt.


  • AliGatorAliGator Membre, Modérateur
    Non non il recrée une nouvelle NSMutableString a chaque boucle (un peu too much d'ailleurs ^^) donc 192.168.0.1


    J'aurais utilisé un simple [NSString stringWithFormat:@192.168.0.%d,i] perso, mais bon...
  • Exact, au temps pour moi.


     


    ça m'apprendra à  vouloir donner des leçons  ::)


Connectez-vous ou Inscrivez-vous pour répondre.