afficher un élément d'une structure complexe de type hostent [c] - C - Programmation
Marsh Posté le 03-11-2003 à 23:30:19
LordAnkou a écrit : |
On peut avoir le message complet et la ligne stp ?
Marsh Posté le 04-11-2003 à 00:17:22
LordAnkou a écrit : bon voila j'ai ma structure si dessous : |
Juste a titre indicatif, prof ou??
A+,
Marsh Posté le 04-11-2003 à 00:36:59
c'est pas hors-charte le trollage sur l'école supérieure privée d'informatique du sud de Paris ?
Marsh Posté le 04-11-2003 à 03:53:26
Citation : (car euh il trouve pas l'adresse du serveur donc bah obliger de remonter et de faire des printf partout...) |
Sinon pour debugger il y a aussi les debugger. Sauf cas bien particuliers c'est quand même mieux que les printf.
Sinon donne le morceau de code ou tu définis adresse, et celui où tu cherches a l'afficher.
Marsh Posté le 04-11-2003 à 07:04:55
Citation : On peut avoir le message complet et la ligne stp ? |
j'ai pas la ligne précise mais il me dit que c pas une structure ou une union (j'essaierai de marquer la ligne précise dans la journée).
Citation : Juste a titre indicatif, prof ou?? |
iut info à bayonne
Citation : c'est pas hors-charte le trollage sur l'école supérieure privée d'informatique du sud de Paris ? |
c quoi le trollage ?
Citation : Sinon donne le morceau de code ou tu définis adresse, et celui où tu cherches a l'afficher. |
struct hostent *adresse_a;
bzero(&serveur_a, sizeof(serveur)); /* remise a zero de la variable serveur */
adresse_a = gethostbyname(nom_serveur_a); /* on recupere l'adresse internet */
printf("%s", adresse_a.h_name);
Marsh Posté le 04-11-2003 à 08:46:05
c'est pas plutôt:
Code :
|
par hasard
edit: fôte inside
Marsh Posté le 04-11-2003 à 18:46:57
et hop on continue mais bon je vais un peu exposer mon problème :
j'ai donc un serveur qui se nomme Iparla sur lequel je veux me connecter :
Code :
|
bon alors là il me sort bien le nom du serveur iparla.iutbayonne.univ-pau.fr
le type d'adresse : 2 (ça doit être IF_NET normalement)
la longueur de l'adresse : 4 (là je trouve ça bizarre mais bon...)
alors le problème que j'ai c'est :
je voudrais afficher l'adresse Internet contenu dans la variable adresse (qui est de type hostent) mais ça je sais pas faire.
parce qu'au final il a le nom du serveur mais il me trouve pas l'adresse internet (quand je la réaffecte dans une autre variable) et n'arrive pas à se connecter (mais il crée bien la socket).
Marsh Posté le 05-11-2003 à 03:38:43
h_addr_list est un tableau d'adresses. Chaque adresse est un tableau de h_length char. En IPv4 une adresse fait 32 octets, soit 4 char sur ton archi. D'où h_length = 4. Le truc pour l'affichage c'est qu'il ne faut pas afficher les char en tant que char (%c), mais plutôt en tant que %hhu. Tu peux faire (c'est sale, c'est pour l'exemple) :
Code :
|
Sinon, t'ai-je déja suggéré d'utiliser un debugger ? Et d'apprendre ce qu'est un pointeur aussi, parce que le coup du « . » et du « -> » c'est quand même la base.
Marsh Posté le 06-11-2003 à 09:20:50
merci pour tout !
j'ai trouvé ou se trouve l'erreur !
je vous explique :
Code :
|
me retourne :
nom du serveur pour la fonction : iparla
nom du serveur : iparla.iutbayonne.univ-pau.fr
type d'adresse : 2
longueur de l'adresse : 4
adresse1 : 65472
adresse2 : 65448
adresse3 : 65500
adresse4 : 15
ors si il ne trouvait pas l'adresse IP il devrait rentrer dans mon if !
Citation : Les fonctions gethostbyname() et gethostbyaddr() renvoient |
par conséquent il trouve l'adresse IP d'iparla mais ce n'est pas la bonne qu'il affiche !
Marsh Posté le 06-11-2003 à 09:33:09
moktar1er a écrit : c'est pas plutôt:
|
un prof qui trouve pas ca c'est quand meme
1/Une sacree b(o)use
2/Qqun qui doit super bien connaitre son compilo pour pas comprendre les msg d'erreurs...
Marsh Posté le 06-11-2003 à 14:08:17
Citation : iut info à bayonne |
J'y suis passé !
Citation : un prof qui trouve pas ca c'est quand meme |
Ca depend des profs... mais y'en a en effet qui sont plus doués pour les apéros que pour coder...
Marsh Posté le 03-11-2003 à 23:24:13
bon voila j'ai ma structure si dessous :
struct hostent {
char * h_name;
char ** h_aliases;
int h_addrtype;
int h_length;
char ** h_addr_list;
};
avec une variable "adresse" de type hostent.
je voudrais afficher h_name et je fais donc :
printf("%s", adresse.h_name);
mais là le compilo m'envoie bouler et renseignement pris auprès du prof il ne sait pas d'ou ça vient...
comment faire pour afficher ce h_name ? (car euh il trouve pas l'adresse du serveur donc bah obliger de remonter et de faire des printf partout...).