int main(int argc, char* argv[]) { struct Physique conn; // Descripteur physique associé à la connexion int connDescPhys; struct gEvenement even; // Ignore la fin des processus fils. // Evite les appels bloquants à wait(). signal(SIGCHLD, SIG_IGN); FILE* f = OuvrirFichier(FICHIER_INFOS); CreerFichier(f); // Crée le fichier si non valide if ((connDescPhys = ConnecterServeur(argc, argv, &conn)) == -1) { printf("Impossible de démarrer une connexion serveur\n"); exit(1); } if (CreerEvenement(connDescPhys, &even, 300) == -1) { printf("Impossible d'armer l'evenement\n"); exit(1); } system("clear"); printf("Serveur prêt\n"); ListerFichier(f); for (;;) { char Buffer[100]; int desc; switch (Attendre(&even, &desc)) { case 1: if (desc == 0) { fgets(Buffer, sizeof Buffer, stdin); system("clear"); printf("Interruption clavier\n", Buffer); ListerFichierAsync(FICHIER_INFOS); } else GererClient(f, &conn); break; case 0: // Timeout break; case -1: printf("Erreur lors de l'attente de l'evenement\n"); exit(1); break; }; } fclose(f); }
int main(void) { int choix; FILE* f = OuvrirFichier(FICHIER_INFOS); int heureEntree, numTicket, heureDepart; do { printf("[1] Creer le fichier transactions\n"); printf("[2] Reserver un ticket\n"); printf("[3] Payer le ticker\n"); printf("[4] Sortir du parking\n"); printf("[5] Lister le contenu du fichier\n"); printf("[6] Quitter\n"); printf("Votre choix: "); scanf("%d", &choix); printf("\n"); switch (choix) { case 1: CreerFichier(f); break; case 2: printf("Heure d'entrée : "); scanf("%d", &heureEntree); ReserverTicket(f, heureEntree, 0, 0, 0); break; case 3: printf("Numero de ticket : "); scanf("%d", &numTicket); printf("Heure de départ : "); scanf("%d", &heureDepart); PayerTicket(f, numTicket, heureDepart, 0, 0, 0); break; case 4: printf("Numero de ticket : "); scanf("%d", &numTicket); printf("Heure de départ : "); scanf("%d", &heureDepart); SortirParking(f, numTicket, heureDepart, 0, 0, 0); break; case 5: ListerFichier(f); break; } } while (choix != 6); return 0; }
int main(int argc, char *argv[]) { struct Physique conn; // Descripteur physique associé à la connexion int connDescPhys; // Ouvre un fichier avec le # de port FILE* f = OuvrirFichier(argv[2]); CreerFichier(f); // Crée le fichier si non valide if ((connDescPhys = ConnecterClient(argc, argv, &conn)) == -1) { printf("Impossible de se connecter au serveur\n"); exit(1); } Transmettre( &conn, connDescPhys, f, "Nouveau ticket", EnvoyerDemandeTicket, ReceptionTicket ); fclose(f); }
int main(int argc, char *argv[]){ if (argc != 2){ printf("Donner un fichier en argument\n"); exit(1); } else { FILE* file = OuvrirFichier(argv[1]); *(argv[1]+strlen(argv[1])-4)='\0'; FILE* fileCompressed = CreerFichier(strcat(argv[1],"decomp")); maillon *Tete, *Queue, *resultatTete=NULL; int choix; readFromFileBytesInOrder(&Tete,&Queue,file); fclose(file); if(Tete == NULL){ printf("ATTENTION ! Le fichier est vide\n"); exit(1); } printf("Veuillez faire un choix de compression : \n 1 - RLE \n 2 - MTF \n 3 - Huffman \n 4 - Combinaison des 3 modes de compression \n"); if(scanf("%d", &choix)==0) return -1; switch(choix){ case 1: printf("\n**********************************************************"); printf("\n* DECODAGE RLE ... *"); printf("\n**********************************************************\n"); Tete = predecodeRle(Tete); decoderRle(Tete); writeListeBytes(Tete,fileCompressed); printf("\n**********************************************************"); printf("\n* DECODAGE RLE FIN *"); printf("\n**********************************************************\n"); break; case 2: printf("\n**********************************************************"); printf("\n* DECODAGE MTF ... *"); printf("\n**********************************************************\n"); resultatTete = MTF2(Tete); writeListeBytes(resultatTete,fileCompressed); liberer(resultatTete); printf("\n**********************************************************"); printf("\n* DECODAGE MTF FIN *"); printf("\n**********************************************************\n"); break; case 3:{ printf("\n**********************************************************"); printf("\n* DECODAGE HUFFMAN ... *"); printf("\n**********************************************************\n"); resultatTete = decodageHuffmanFinal(&Tete, &Queue); #ifdef DEBUGG printf("\nVoici le message décodé en Hexa\n"); print2(resultatTete); #endif //Ecriture du message dans le fichier writeListeBytes(resultatTete,fileCompressed); liberer(resultatTete); printf("\n**********************************************************"); printf("\n* DECODAGE HUFFMAN FIN *"); printf("\n**********************************************************\n"); break; } case 4:{ printf("\n**********************************************************"); printf("\n* DECODAGE COCKTAIL ... *"); printf("\n**********************************************************\n"); printf("Veuillez faire un choix des prétraitements à opérer :\n"); printf("RLE?\n"); int RLE,mtf; if(scanf("%d", &RLE)==0) return -1; printf("MTF?\n"); if(scanf("%d", &mtf)==0) return -1; printf("\n**********************************************************"); printf("\n* DECODAGE HUFFMAN ... *"); printf("\n**********************************************************\n"); resultatTete = decodageHuffmanFinal(&Tete, &Queue); liberer(Tete); Tete = resultatTete; printf("\n**********************************************************"); printf("\n* DECODAGE HUFFMAN FIN *"); printf("\n**********************************************************\n"); if (mtf){ printf("\n**********************************************************"); printf("\n* DECODAGE MTF ... *"); printf("\n**********************************************************\n"); resultatTete = MTF2(Tete); liberer(Tete); Tete = resultatTete; printf("\n**********************************************************"); printf("\n* DECODAGE MTF FIN *"); printf("\n**********************************************************\n"); } if (RLE){ printf("\n**********************************************************"); printf("\n* DECODAGE RLE ... *"); printf("\n**********************************************************\n"); Tete = predecodeRle(Tete); decoderRle(Tete); printf("\n**********************************************************"); printf("\n* DECODAGE RLE FIN *"); printf("\n**********************************************************\n"); } #ifdef DEBUGG printf("\nVoici le message décodé en Hexa\n"); print2(Tete); #endif //Ecriture du message dans le fichier writeListeBytes(Tete,fileCompressed); printf("\n**********************************************************"); printf("\n* DECODAGE COCKTAIL FIN *"); printf("\n**********************************************************\n"); break; } default: printf("Erreur de choix"); } //liberer(Tete); fclose(fileCompressed); } return 0; }