Skip to content
Snippets Groups Projects
Commit 9072d063 authored by Kirill's avatar Kirill
Browse files

Exo 11 fait

parent 1cdfdb75
Branches
No related merge requests found
......@@ -14,26 +14,57 @@
void cpy (int src, int dst)
{
return;
char buffer[1024];
// Read from the source descriptor
ssize_t bytesRead;
while ((bytesRead = read(src, buffer, sizeof(buffer))) > 0) {
ssize_t bytesWritten = write(dst, buffer, bytesRead);
if (bytesWritten == -1) {
perror("Error writing to destination descriptor");
exit(EXIT_FAILURE);
}
}
}
int main (int argc, char * argv[])
{
/* test arg number */
if(argc!=2){
fprintf(stderr, "usage: %s server_name\n", argv[0]);
exit(EXIT_FAILURE);
}
/* get the list of struct addrinfo */
struct addrinfo hints,*res;
memset(&hints, 0, sizeof hints);
hints.ai_family = AF_UNSPEC; // Supporte IPv4 ou IPv6
hints.ai_socktype = SOCK_STREAM;
int status = getaddrinfo(argv[1], "80", &hints, &res);
if (status != 0) {
fprintf(stderr, "getaddrinfo error: %s\n", gai_strerror(status));
exit(EXIT_FAILURE);
}
/* create socket */
int new_socket;
CHECK(new_socket=socket(res->ai_family,res->ai_socktype,res->ai_protocol));
/* connect to the server */
CHECK(connect(new_socket,res->ai_addr,res->ai_addrlen));
/* prepare GET cmd */
char get[SIZE];
snprintf(get, SIZE, "GET / HTTP/1.1\r\nHost: %s\r\nConnection: close\r\n\r\n", argv[1]);
/* send GET cmd and get the response */
CHECK(send(new_socket,get,strlen(get),0));
char buffer[SIZE]={0};
memset(buffer, 0, sizeof(buffer));
ssize_t n;
while ((n = recv(new_socket, buffer, SIZE - 1, 0)) > 0) {
buffer[n] = '\0';
printf("%s", buffer);
}
/* close socket */
close(new_socket);
/* free struct addrinfo list */
freeaddrinfo(res);
return 0;
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment