#include #include #include #include #include #include #include #include #include #include #include int main() { struct sockaddr_in adresse_client; struct sockaddr_in adresse_serveur; int soc_ecoute,pid; int soc; int n; int longueur_adresse; char reponse; //int bufsize=1024; /* a 1K buffer */ char *buffer[2]/*=malloc(bufsize)*/; //initialisation de la srtucture adresse_serveur bzero(&adresse_serveur,sizeof(adresse_serveur)); adresse_serveur. sin_family = AF_INET ; adresse_serveur.sin_addr.s_addr = htonl(INADDR_ANY) ; adresse_serveur.sin_port = htons( 12340) ; inet_pton( AF_INET,"127.0.0.1" , &adresse_serveur.sin_addr) ; // creation de la socket if((soc_ecoute = socket(AF_INET,SOCK_STREAM,0)) == -1) { perror("erreur creation socket d'ecoute\n"); exit(-1); } else { printf("serveur en ecoute\n"); } if((soc= socket(AF_INET,SOCK_STREAM,0)) == -1) { perror("erreur creation socket d'acceptation\n"); exit(-1); } // le serveur affiche son adresse et son num de port pour que le client puisse se connecte //printf("je suis le serveur mon adresse est %s et mon num de port est %d\n",adresse_serveur.sin_addr.s_addr,adresse_serveur.sin_port); //printf("veuillez les utiliseés pour que vous puissiez vous connecter\n"); longueur_adresse = sizeof(adresse_client); //on donne un nom à la socket if(bind (soc_ecoute, (struct sockaddr*)&adresse_serveur,longueur_adresse)< 0) perror("erreur bind \n"); //serveur en ecoute if((listen(soc_ecoute,3)) == -1) perror("erreur listen\n"); // si le serveur réçoit une demande de connexion on utilise la fonction accept while(1) { if((soc = accept(soc_ecoute,(struct sockaddr*)&adresse_client,&longueur_adresse) < 0)) { perror("erreur accept\n"); } // si le serveur accepte de se connecter à un client /* switch(fork()) { case -1: perror("erreur forck\n"); break; case 0: */ //close(soc_ecoute); printf("client connecte\n"); // recv(new_socket,buffer,bufsize,0); // printf("desc fichier %d\n", soc); if(recv(soc,buffer,strlen(buffer), 0)<0) { perror("erreur recev\n"); exit(1); } //read(soc,&n,sizeof(int)); printf("From client : %s\n\n", buffer); printf(" le client a ecrit %s\n",buffer); // on cree un thread associe a chaque client // reponse = se_connecter(); //read (soc,&n,sizeof(int)); // n = n*2; // //write(soc,&n,sizeof(int)); close(soc); // break; // default: close(soc); // } } return 0; }