Utilisation et fonctionnement de gethostbyname() [Résolu]

lolo38550 30 Messages postés mardi 25 juillet 2006Date d'inscription 12 janvier 2010 Dernière intervention - 16 avril 2009 à 13:00 - Dernière réponse : lolo38550 30 Messages postés mardi 25 juillet 2006Date d'inscription 12 janvier 2010 Dernière intervention
- 16 avril 2009 à 16:19
Bonjour à tous,

Je développe en C une application client serveur sous windows. Côté client, j'utilise la fonction gethostbyname de la librairie winsock afin de récupérer l'adresse IP du serveur hebergé sur une machine connecté au réseau locale et cela fonctionne.

Pour mes tests, je connecte directement les deux machines ensemble en utilisant un câble croisé. Ce sera d'ailleurs la configuration d'utilisation. Cela fonctionne également mais dans cette configuration ci, la fonction gethostbyname met un certain temps avant de retourner la structure hostent(quelques secondes). Je crois savoir qu'elle doit utiliser plusieurs méthodes pour résoudre le nom. Elle doit déjà étudier le fichier host se trouvant dans le répertoire %System\system32\etc\ puis contacter le serveur DNS en cas d'échec. Dans le cas d'une connexion par câble croisé, la requête au DNS ne fonctionne évidement pas non plus, le serveur étant inaccessible.Du coup, je pense que l'attente que je constate est dû aux timeout des différentes recherches.

Mes questions sont les suivantes:
1/ Comme se fait-ce que la fonction gethostbyname fonctionne (c'est à dire me retourne la bonne adresse IP) alors que mon fichier host est vide (en fait, il ne contient seulement l'adresse de localhost) et que dans ce cas, on ne peut pas communiquer avec le serveur DNS ? J'immagine qu'il doit y avoir une autre méthode de résolution mais je ne la connais pas.
2/ Comment faire pour changer l'ordre d'utilisation des différentes méthodes utilisées par gethostbyname ?

Merci d'avance
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
cs_rt15 3982 Messages postés mardi 8 mars 2005Date d'inscription 7 novembre 2014 Dernière intervention - 16 avril 2009 à 14:13
3
Merci
Salut,

1/ Aucune idée. Une requête de broadcast peut être. -> Wireshark.

Merci cs_rt15 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 102 internautes ce mois-ci

Commenter la réponse de cs_rt15
lolo38550 30 Messages postés mardi 25 juillet 2006Date d'inscription 12 janvier 2010 Dernière intervention - 16 avril 2009 à 16:19
0
Merci
Salut et merci de ta réponse!

En effet, je n'avais pas pensé à utiliser Wireshark... ce qui m'a permis de répondre à ma première question:

Lorsque je suis sur le réseau local, mon client envoie une requête à l'adresse du serveur DNS en utilisant le protocole DNS afin de récupérer l'adresse IP de la machine hébergeant mon serveur.

Dans la configuration où les deux machines sont reliées par un cable croisé, une requête est envoyé à l'adresse de diffusion en utilisant le protocole NBNS et c'est la machine hôte du serveur qui répond en envoyant son adresse IP.

Je pense donc que dans ce cas, mon client se met en attente des réponses, d'où la lenteur que je constate!

Merci de ton aide !
Commenter la réponse de lolo38550

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.