client - serveur --> bouh un serveur avec @ 0.0.0.0 - C - Programmation
Marsh Posté le 27-10-2003 à 17:49:06
tu devrais utiliser tcpdump pour débugger ce genre de programme à mon avis
Marsh Posté le 27-10-2003 à 17:56:28
bon j'ai regardé un peu le fichier
/etc/hosts
et à ma grande surprise y'a pas iparla mais juste kartxila et localhost (---> commment fait t'il alors pour me trouver une adresse à Iparle ???).
Ensuite j'ai vraiment bcp de mal à comprendre la ligne suivante (commentaire du prof : il est intéressant de prendre le tps de comprendre ce que signifie l'affectation ci dessus...) :
serveur_a.sin_addr.s_addr=((struct in_addr *)(adresse_a -> h_addr))->s_addr;
je comprends qu'on récupérer une adresse contenu dans adresse_a et qu'on l'a met dans serveur_a.sin_addr.s_addr mais je le fonctionnement ensuite c compliqué.
Marsh Posté le 27-10-2003 à 17:59:20
N.B : je ne peux pas utiliser tcpdump car à l'iut au niveau de l'install on a aucun droit...
Marsh Posté le 28-10-2003 à 21:53:42
je voudrais juste un petit up sur cette partie :
Deuxième prb : printf("Connexion Etablie avec %s\n", (inet_ntoa(serveur_a.sin_addr)));
dans les deux cas précédents, il me retourne comme adresse 0.0.0.0
En plus le inet_ntoa est censé prendre serveur_a.sin_addr.s_addr mais quand je mes il m'envoie : "incompatible type for argument 1 of 'inet_ntoa' ".
c pas logique il devrait plutot m'indiquer le contraire non ?
ET
Ensuite j'ai vraiment bcp de mal à comprendre la ligne suivante (commentaire du prof : il est intéressant de prendre le tps de comprendre ce que signifie l'affectation ci dessus...) :
serveur_a.sin_addr.s_addr=((struct in_addr *)(adresse_a -> h_addr))->s_addr;
je comprends qu'on récupérer une adresse contenu dans adresse_a et qu'on l'a met dans serveur_a.sin_addr.s_addr mais je le fonctionnement ensuite c compliqué.
Marsh Posté le 27-10-2003 à 17:32:16
bon voila le but est de programmer un client-serveur.
pour l'instant j'en suis au serveur et j'ai deux problèmes.
mais d'abord exposons l'horreur...
je sais que c loin d'être bien programmé mais on verra ça plus tard...
alors le premier prb vient au niveau du bind.
si je mes &serveur_a il va dans le if, mais si je mes INADDR_ANY ça me l'indique pas (et se connecte donc soit disant bien). pk ? ça veut dire que l'adresse que je récupère plus haut n'est pas valide ? (pourtant je fais un test pour savoir si le nom existe).
Deuxième prb : printf("Connexion Etablie avec %s\n", (inet_ntoa(serveur_a.sin_addr)));
dans les deux cas précédents, il me retourne comme adresse 0.0.0.0
En plus le inet_ntoa est censé prendre serveur_a.sin_addr.s_addr mais quand je mes il m'envoie : "incompatible type for argument 1 of 'inet_ntoa' ".
c pas logique il devrait plutot m'indiquer le contraire non ?