#include #include #include #include #include #include #include #define BUFFER_SIZE 1024 void usage() { fprintf(stderr, "Usage: client hostname port\n"); exit(1); } int main(int argc, char **argv) { if (argc != 3) { fprintf(stderr, "Erreur : Nombre incorrect d'arguments !\n"); usage(); } const char *hostname = argv[1]; int port = atoi(argv[2]); int clientSocket = socket(AF_INET6, SOCK_STREAM, 0); if (clientSocket == -1) { perror("Error creating client socket"); exit(EXIT_FAILURE); } struct sockaddr_in6 serverAddress; memset(&serverAddress, 0, sizeof(serverAddress)); serverAddress.sin6_family = AF_INET6; serverAddress.sin6_port = htons(port); // if (inet_pton(AF_INET6, hostname, &(serverAddress.sin6_addr)) <= 0) { // perror("Error converting IP address"); // close(clientSocket); // exit(EXIT_FAILURE); // } if (connect(clientSocket, (struct sockaddr *)&serverAddress, sizeof(serverAddress)) == -1) { perror("Error connecting to server"); close(clientSocket); exit(EXIT_FAILURE); } printf("Connected to server. Receiving file...\n"); FILE *file = fopen("received_file.txt", "wb"); if (!file) { perror("Error opening file for writing"); close(clientSocket); exit(EXIT_FAILURE); } unsigned char buffer[BUFFER_SIZE]; size_t bytesRead; while ((bytesRead = recv(clientSocket, buffer, BUFFER_SIZE, 0)) > 0) { fwrite(buffer, 1, bytesRead, file); } fclose(file); close(clientSocket); return 0; }