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...
 
Code :
 - /* -------- */
 - /* -RESEAU- */
 - /* -------- */
 - /* ------------------- */
 - /* -Fichier a inclure- */
 - /* ------------------- */
 - #include <stdio.h> /* pour la gestion I/O */
 - #include <strings.h> /* pour bzero */
 - #include <sys/types.h>
 - #include <sys/socket.h> /* pour la creation du socket */
 - #include <netinet/in.h>
 - #include <netdb.h>
 - #include <unistd.h> /* pour la fonction close */
 - #include <arpa/inet.h>  /* pour la fonctioon inet_ntoa */
 - /* ------------------------------- */
 - /* -Corps du programme principale- */
 - /* ------------------------------- */
 - int main(int argc, char * argv[])
 - {
 - /* ---------- */
 - /* -variable- */
 - /* ---------- */
 -   char *nom_serveur_a = "iparla" ; /* nom du serveur d'authentification */
 -   char *nom_serveur_c = "kartxila" ; /* nom du serveur de calcul */
 -   int port_a = 64101 ; /* port du serveur authentification */
 -   int port_c = 64102 ; /* port du serveur de calcul */
 -   int descripteur_a; /* descripteur du socket de connexion avec iparla */
 -   struct sockaddr_in serveur_a;
 -   struct hostent *adresse_a;
 - /* -------------------initialisation---------------------------- */
 - /* initialisation : on initialise la variable d'adresse d'iparla */
 -   bzero(&serveur_a, sizeof(serveur_a)); /* remise a zero de la variable serveur_a */
 -   adresse_a = gethostbyname(nom_serveur_a); /* on recupere l'adresse internet d'iparla */
 -   /* test si la fonction a trouver une adresser correspondant au serveur */
 -   if (adresse_a==NULL)
 -     {
 -       printf("Nom du serveur incorrect\n" );
 -       return -1;
 -     }
 -   serveur_a.sin_family = AF_INET;
 -   serveur_a.sin_port = htons(port_a);
 -   serveur_a.sin_addr.s_addr=((struct in_addr *)(adresse_a -> h_addr))->s_addr;
 - /* -------------------creation_socket -------------------- */
 - /* creation_socket : on va creer le terminal de connexion */
 -   if ((descripteur_a = socket(AF_INET,SOCK_STREAM,0)) < 0)
 -     {
 -       printf("Erreur lors de la creation du socket\n" );
 -       return descripteur_a;
 -     }
 -  
 - /* -----------------bind_socket------------------- */
 - /* bind_socket : on va attacher le socket a iparla*/
 -   if ( bind(descripteur_a, &serveur_a, sizeof(struct sockaddr_in))< 0)
 -     {
 -       printf("impossible de lier la socket au serveur\n" );
 -       return -1;
 -     }
 -   printf("Connexion Etablie avec %s\n",  (inet_ntoa(serveur_a.sin_addr)));
 - /* --------------------Fermer_socket------------------------------ */
 - /* fermer_socket : on va fermer le socket relier au serveur iparla */
 -   close(descripteur_a);
 - return 1;
 - }
 
  | 
 
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 ?