int main(int argc, char *argv[]) { short int nport=4000; // nport num port utilisé pour la connexion int ecoute; // Descripteur de la socket d'ecoute char *ufname, uxml[SIZE]; ufname = (char*)malloc(sizeof "users"); strcpy(ufname,"users"); /* Lecture des arguments de la commande */ #ifdef DEBUG printf("======= Lecture ======"); #endif // On verifie que le arguments sont bons if((analyseArg(argc,argv,&nport,ufname))==-1) {display_right_syntax(); return -1;} // Test sur l'ouverture du fichier des logins if((users = fopen(ufname,"r"))==NULL) {perror("Echec fopen:"); return -1;} #ifdef DEBUG printf("======= Fin Lecture ======"); #endif /* Creation du process */ printf("Entrez le nom du fichier à parser:"); scanf("%s",uxml); if(addProcess(&t_process, uxml)!=0) {printf("Erreur de parsing fichier %s",uxml); return -1;} /* Initialisation du serveur */ ecoute = initialisationServeur(&nport); /* Lancement de la boucle d'ecoute */ //if(boucleServeur(ecoute,dummy,gestionClient)==-1) perror("Echec serveur"); if(boucleServeur(ecoute,lanceClientLeger,gestionClient)==-1) {perror("Echec serveur"); return -1;} fclose(users); free(ufname); return 0; }
// init_commutator_and_listen_to_connections: intialise la socket de connexion du serveur // et effectue boucle de connexion pour les clients void init_commutator_and_listen_to_connections(int argc, char**argv) { short int port; int contact_socket; // socket sur laquelle contacter le serveur // recupération du port entré par l'utilisateur if ( (port = get_port_from_options(argc, argv)) == NO_PORT ) { log(("Default port has being set"), stderr) port = SERVER_LOCAL_PORT; } // récuperation du descripteur de la socket serveur contact_socket = initialisationServeur(&port , MAX_CONNEXIONS); if ( contact_socket < 0 ) { err_log(("Main.initialisationServeur"), stderr) exit(EXIT_FAILURE); } // Affichage des données du serveur display_server_address(stdout, contact_socket); init_all_ports_of_commutator(); // Creation de l'id de la file de requete serverResquestID = create_server_request_id(); // ------------------------------------------------------------------ // TODO: run two thread for responding to clients and purge addresses // ------------------------------------------------------------------ lanceThread(request_admin_handler, serverResquestID); // Lancement de la boucle d'écoute if (boucleServeur( contact_socket, process_slight_activity_for) < 0) { err_log("Main.boucleServeur", stderr) exit(EXIT_FAILURE); } }