Utilisateur anonyme
-
29 mars 2010 à 22:47
Utilisateur anonyme -
31 mars 2010 à 17:50
Hello tout le monde,
Voila j'ai un projet de client IRC (en C) à faire, mais j'ai quelques pitites questions qui restent en suspens ^^
Déja en ce qui concerne les retours du serveur :
Normalement (c'est bien précisé dans la RFC) à chaque envoi d'un message/commande de la part du client à un serveur, une réponse devrait nous être renvoyée, en tout cas en cas d'erreur.
Mais le problème, c'est que je ne comprend pas comment savoir si le message qu'on (le client) vient d'envoyer est un succès ou s'il génère une erreur : quand on commence l'authentification avec PASS, NICK, USER, si tout se passe bien on n'a pas de retour de la part du serveur (en fait si, on a des trucs du genre "NOTICE AUTH blablabla" mais dont j'ai pas l'impression qu'ils soient une conséquence de l'envoi d'un message, mais plutot de ma connexion au serveur, mais qui sont aussi présent quand il y a une erreur), sinon on a une réponse (une ligne avec le numéro d'erreur entre autres).
Et ce que je voudrais faire, c'est envoyer mon message PASS, puis NICK, etc... en utilisant des fonctions différentes, par exemple send_pass, send_nick, ... et en controlant a chaque fois si on a eu une erreur ou non.
Mais du coup, que ce soit avec un select ou un recv, bloquant ou non bloquant, je ne vois pas comment savoir si on a eu une erreur ou pas : puisque le serveur ne répond pas si tout s'est bien passé, faut-il mettre un timeout au bout duquel on considère que tout s'est bien passé ? si oui y a-t'il un temps de timeout standard pour ça ?
Parce que dans le cas ou on a une erreur, à la limite y'a pas de problème, on boucle et si y'a une erreur ben on la prend en compte et on sort de la boucle, mais pour etre sur qu'il n'y a pas d'erreur, on va pas boucler à chaque fois pendant 5 secondes non ??? D'ou le probleme de timeout...
Parce que de tous les codes que j'ai un peu étudié sur IRC pour l'instant, y'en a aucun qui controle s'il y a une erreur à l'authentification. Alors soit c'était pas des super références, soit c'est vraiment évident....à ce moment la je vais devoir changer de branche ^^
Et mon deuxième problème (plus simple et moins important ;-) est à propos de tests unitaires :
On doit écrire et utiliser des tests unitaires avec CUnit, donc ça va, je comprends le truc j'ai lu la doc, mais sur notre sujet on nous dit que les tests doivent être automatiques, répétables et disponibles.
Disponible, ça veut dire qu'on doit y avoir accès du moment ou on a accès au code source, mais est-ce que ça veut dire que les tests doivent être écrits chacuns a la suite des fonctions qu'ils testent, ou bien doivent-ils se trouver dans des fichiers séparés ?
Répétable, on nous précise que ça veut dire "indépendant de l'environnement dans lequel il est exécuté", la j'ai rien compris :-s
Automatique, on nous dit que ça signifie "s'éxécutant automatiquement après la compilation du code contenant la partie à tester". Mais je comprends pas trop, ça veut dire que chaque fois qu'on recompile le projet, on doit se retaper l'exécution de tous les tests unitaires ??? Y'a un truc qui m'échappe là ^^
Pasque bon, vu qu'il faut initialiser le registre, le nettoyer après, bref tout le tralala, il faut un main pour faire tout ça, et ça en fera un peu beaucoup dans le projet à la fin...à moins qu'on mette TOUT dans un seul main, d'après ce que j'ai vu on peut avoir une interface dynamique avec CUnit.
Voila voila, donc je remercie déja d'avance ceux qui ont pris la peine de me lire, ça a pas du être évident lol
Alors si vous avez une suggestion, quelle qu'elle soit, à me faire, n'hésitez pas même si vous êtes pas sur, du moment que ça peut être une idée que j'ai pas eue ou un truc auquel j'ai pas pensé ^^