#include #include // pour strlen() #include // pour exit() #include #include #include #include #include #include #define BUFFER_SIZE 1000 // Initialise un client TCP, retourne la socket creee int openTCPClient(char *hote, int port) { int s; struct sockaddr_in adresse; socklen_t taille = sizeof adresse; // creation socket s = socket(PF_INET, SOCK_STREAM, 0); if(s<0){ perror("connexionServeur.socket"); exit(-1); } // connexion memset(&adresse, 0, sizeof(adresse)); adresse.sin_family=AF_INET; adresse.sin_port = htons(port); adresse.sin_addr.s_addr = inet_addr(hote); if(connect(s,(struct sockaddr *)&adresse, taille)<0) return -1; return s; } // Envoie un message TCP sur une connexion active void sendTCP(int socket, char *message, int length_message){ if(length_message <= 0) return; write(socket, message, length_message); } // Recois un message TCP sur une connexion active. Retourne le nombre de char recu int receiveTCP(int socket, char *message, int max_length){ return read(socket, message, max_length); } // Ferme le connection entre le serveur et le client void closeTCPCLient(int socket){ shutdown(socket, SHUT_RDWR); } int main(void){ char google_addr[50] = "172.217.7.163"; // Open connection int socket = openTCPClient(google_addr, 80); // Send GET HTTP request test char message[1000] = "GET / HTTP/1.1\n\n\0"; sendTCP(socket, message, strlen(message)); // Recieve HTTP response char rep[BUFFER_SIZE]; int status = receiveTCP(socket, rep, BUFFER_SIZE); if(status < 0){ printf("Erreur de recieve\n"); exit(-1); } // affichage printf("%s\n", rep); // déconnection closeTCPCLient(socket); return 0; }