14,15 → 14,18 |
printf("Connecting to %s on port %d\n", host, port); |
|
struct addrinfo *addr_info; |
if (getaddrinfo(host, 0, 0, &addr_info) != 0) { |
char port_str[16]; sprintf(port_str, "%d", port); |
struct addrinfo hints; |
memset(&hints, 0, sizeof(hints)); |
hints.ai_family = AF_UNSPEC; // IPv4 or IPv6 doesnt matter |
hints.ai_socktype = SOCK_STREAM; // TCP stream sockets |
if (getaddrinfo(host, port_str, 0, &addr_info) != 0) { |
printf("Host %s not found!\n", host); |
freeaddrinfo(addr_info); |
exit(-1); |
} |
unsigned int host_sin_addr = addr_info->ai_addr->sin_addr; |
printf("IP address of %s is %s\n", host, inet_ntoa(host_sin_addr)); |
//printf("Host port = %d\n", addr_info->ai_addr->sin_addr >> 8); |
freeaddrinfo(addr_info); |
printf("IP address of %s is %s\n", host, inet_ntoa(addr_info->ai_addr->sin_addr)); |
//printf("Host port = %d\n", addr_info->ai_addr->sin_port >> 8); |
|
char request[256]; |
sprintf(request, "GET /en/ HTTP/1.1\r\nHost: %s\r\n\r\n", host); |
29,14 → 32,9 |
printf("request = %s\n", request); |
|
int sock = socket(AF_INET4, SOCK_STREAM, IPPROTO_TCP); |
sockaddr sock_addr; |
sock_addr.sin_family = AF_INET4; |
sock_addr.sin_port = 80 << 8; // dirty hack, normally need to use htons(80) but there is no such here in libraries |
sock_addr.sin_addr = host_sin_addr; |
sock_addr.sin_zero = 0; |
|
puts("Connecting...\n"); |
if (connect(sock, &sock_addr, sizeof(sock_addr)) != 0) { |
if (connect(sock, addr_info->ai_addr, addr_info->ai_addrlen) != 0) { |
printf("Connection failed, err_code = %d\n", err_code); |
exit(err_code); |
} |
57,6 → 55,10 |
|
printf("Response = %s\n", buf); |
|
freeaddrinfo(addr_info); |
|
close(sock); |
puts("\n goodbye)\n"); |
con_exit(0); |
return 0; |
} |