Faire un Client/Serveur DNS en C

Fermé
Nero15 - Modifié par Nero15 le 21/05/2014 à 18:43
sambia39 Messages postés 610 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 9 février 2023 - 22 mai 2014 à 13:22
Bonjour,

Je suis entrain d'essayer de coder un Client/Serveur DNS en C en respectant la RFC 1034, j'ai mon Client.c et mon Serveur.c, je veux que le Client envoie un URL au Serveur, celui ci va essayer de trouver l'adresse IP correspondante, s'il l'a trouve pas, il interroge un autre serveur pour trouver l'adresse.
J'ai trouvé ceci sur internet:
http://www.binarytides.com/dns-query-code-in-c-with-linux-sockets/

mais le probleme c'est que ça enregistre pas les réponses des autres serveurs, en fait en gros, je veux un compromis entre la fonction gethostbyname() sur C, qui donne l'adresse IP correspondante et l'enregistre je ne sais ou et ce code DNS.

Alors mes questions sont les suivantes :

- Quelle différence entre la RFC 1034 et la 1035 ?
- Quelles sont les critéres à respecter pour faire un programme conforme à la RFC 1034 ?
- Si vous avez des propositions pour un algorithme pour implementer ça en C je suis preneur :)

Merci d'avance.

1 réponse

sambia39 Messages postés 610 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 9 février 2023 49
22 mai 2014 à 13:22
Bonjour
Je ne pense pas avoir trop compris ce que tu demandes, en plus qu'est-ce que tu essayes de nous faire comprendre par "le problème c'est que ça enregistre pas les réponses des autres serveurs, en fait en gros, je veux un compromis entre la fonction gethostbyname() sur C, qui donne l'adresse IP correspondante et l'enregistre je ne sais où et ce code DNS."

Il n'est pas question de compromis avec le langage C, de toute façon tu peux très bien utiliser le langage C++ avec
gethostbyname
.

Pour infos la primitive
 struct hostent gethostbyname(char *nom); 
ne donne pas l'adresse IP c'est juste une primitive qui permet d'obtenir les informations relatives à une entrée de fichier en especifiant comme paramètre de recherche le nom symbolique ou l'adresse IP de la machine puis elle retourne une structure du type
 struct hostent 
contenant les informations, en cas d'erreur la primitive positionne non pas directement la variable
errno
mais une autres
h_errno
qui peut prendre plusieurs valeurs bien définis.

La norme RFC 1034 présente les principes des DNS plus précisément les concepts de base d'un serveur de nom de domaine et la RFC 1035 présente comment peut-on mettre en oeuvre ces concepts et appliquer les spécifications nécéssaires.
à ta question qu'elles sont les critères à respecter pour faire un programme conforme à la RFC 1034 ?
il te faut lire la documentation et suivre les indications qui y sont précisées pour pouvoir rendre conformes ton application.

et pour finir , avant de te fournir un algorithme ou autres choses à implémenter présente nous concrètement ce dont tu compte faire et un code que tu as déjà écrit et je pense que toute la communauté pourra t'aider
à bientôt
0