#include #include #include #include #include #include #include #include #include #include // Ajouter cette ligne pour utiliser la fonction time() // Fonction pour la création d'un socket client int creer_socket_client(const char* adresse_ip, int port) { int socket_client; // Numéro de la socket client struct sockaddr_in adresse_serveur; // Adresse du serveur // Création de la socket socket_client = socket(AF_INET, SOCK_STREAM, 0); if (socket_client == -1) { perror("socket client"); exit(-1); } // Configuration de la socket adresse_serveur.sin_family = AF_INET; // Protocole de la socket (IP) adresse_serveur.sin_port = htons(port); // Numéro de port du serveur inet_aton(adresse_ip, &adresse_serveur.sin_addr); // Adresse IP du serveur // Connexion au serveur if (connect(socket_client, (struct sockaddr*)&adresse_serveur, sizeof(adresse_serveur)) == -1) { perror("connect"); exit(-1); } return socket_client; } // Fonction pour faire dormir le programme pendant un certain nombre de secondes // en affichant un compte à rebours à l'écran void sleep_with_countdown(int seconds) { // Afficher un message indiquant que le client est en attente pendant le nombre de secondes spécifié printf("En attente pendant %d secondes...\n", seconds); // Définir le temps de départ time_t start = time(NULL); // Répéter jusqu'à ce que le nombre de secondes spécifié soit écoulé while (time(NULL) - start < seconds) { // Calculer le temps restant en secondes int remaining = seconds - (time(NULL) - start); // Afficher le temps restant sur la ligne précédente printf("Temps restant : %d secondes", remaining); // Dormir pendant 1 seconde sleep(1); } } int main(int argc, char* argv[]) { int socket_client; // Numéro de la socket client int port; // Numéro de port du serveur char* adresse_ip; // Adresse IP du serveur char buffer[32]; // Buffer pour stocker la réponse du serveur // Vérifier le nombre d'arguments if (argc != 3) { printf("Usage: %s adresse_ip port\n", argv[0]); exit(-1); } // Récupérer l'adresse IP et le numéro de port adresse_ip = argv[1]; port = atoi(argv[2]); // Créer la socket client socket_client = creer_socket_client(adresse_ip, port); // Afficher un message indiquant que la connexion avec le serveur est établie printf("Connexion avec le serveur établie...\n"); // BOUCLE PRINCIPALE while (1) { // Envoyer une demande d'état au serveur write(socket_client, "ETAT", strlen("ETAT") + 1); // Afficher un message indiquant que la demande d'état a été envoyée printf("Demande d'état envoyée...\n"); // Afficher un message indiquant que le client est en train d'attendre la réponse du serveur printf("En attente de la réponse du serveur...\n"); // Attendre la réponse du serveur if (read(socket_client, buffer, sizeof(buffer)) == -1) { perror("read"); exit(-1); } // Afficher la réponse du serveur (son PID) printf("Réponse du serveur : %s\n", buffer); // Utiliser la fonction sleep_with_countdown() pour afficher un compte à rebours de 30 secondes // avant de continuer avec la boucle sleep_with_countdown(30); } // Fermer la socket client close(socket_client); return 0; }