Rev 8448 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 8448 | Rev 8450 | ||
---|---|---|---|
Line 12... | Line 12... | ||
12 | char *host = "kolibrios.org"; |
12 | char *host = "kolibrios.org"; |
13 | int port = 80; |
13 | int port = 80; |
14 | printf("Connecting to %s on port %d\n", host, port); |
14 | printf("Connecting to %s on port %d\n", host, port); |
Line 15... | Line 15... | ||
15 | 15 | ||
- | 16 | struct addrinfo *addr_info; |
|
- | 17 | char port_str[16]; sprintf(port_str, "%d", port); |
|
- | 18 | struct addrinfo hints; |
|
- | 19 | memset(&hints, 0, sizeof(hints)); |
|
- | 20 | hints.ai_family = AF_UNSPEC; // IPv4 or IPv6 doesnt matter |
|
16 | struct addrinfo *addr_info; |
21 | hints.ai_socktype = SOCK_STREAM; // TCP stream sockets |
17 | if (getaddrinfo(host, 0, 0, &addr_info) != 0) { |
22 | if (getaddrinfo(host, port_str, 0, &addr_info) != 0) { |
18 | printf("Host %s not found!\n", host); |
23 | printf("Host %s not found!\n", host); |
19 | freeaddrinfo(addr_info); |
24 | freeaddrinfo(addr_info); |
20 | exit(-1); |
25 | exit(-1); |
21 | } |
- | |
22 | unsigned int host_sin_addr = addr_info->ai_addr->sin_addr; |
26 | } |
23 | printf("IP address of %s is %s\n", host, inet_ntoa(host_sin_addr)); |
27 | printf("IP address of %s is %s\n", host, inet_ntoa(addr_info->ai_addr->sin_addr)); |
24 | //printf("Host port = %d\n", addr_info->ai_addr->sin_addr >> 8); |
- | |
Line 25... | Line 28... | ||
25 | freeaddrinfo(addr_info); |
28 | //printf("Host port = %d\n", addr_info->ai_addr->sin_port >> 8); |
26 | 29 | ||
27 | char request[256]; |
30 | char request[256]; |
Line 28... | Line 31... | ||
28 | sprintf(request, "GET /en/ HTTP/1.1\r\nHost: %s\r\n\r\n", host); |
31 | sprintf(request, "GET /en/ HTTP/1.1\r\nHost: %s\r\n\r\n", host); |
29 | printf("request = %s\n", request); |
- | |
30 | - | ||
31 | int sock = socket(AF_INET4, SOCK_STREAM, IPPROTO_TCP); |
- | |
32 | sockaddr sock_addr; |
- | |
33 | sock_addr.sin_family = AF_INET4; |
- | |
Line 34... | Line 32... | ||
34 | sock_addr.sin_port = 80 << 8; // dirty hack, normally need to use htons(80) but there is no such here in libraries |
32 | printf("request = %s\n", request); |
35 | sock_addr.sin_addr = host_sin_addr; |
33 | |
36 | sock_addr.sin_zero = 0; |
34 | int sock = socket(AF_INET4, SOCK_STREAM, IPPROTO_TCP); |
37 | 35 | ||
38 | puts("Connecting...\n"); |
36 | puts("Connecting...\n"); |
39 | if (connect(sock, &sock_addr, sizeof(sock_addr)) != 0) { |
37 | if (connect(sock, addr_info->ai_addr, addr_info->ai_addrlen) != 0) { |
Line 55... | Line 53... | ||
55 | exit(err_code); |
53 | exit(err_code); |
56 | } |
54 | } |
Line 57... | Line 55... | ||
57 | 55 | ||
Line -... | Line 56... | ||
- | 56 | printf("Response = %s\n", buf); |
|
- | 57 | ||
- | 58 | freeaddrinfo(addr_info); |
|
- | 59 | ||
58 | printf("Response = %s\n", buf); |
60 | close(sock); |
59 | 61 | puts("\n goodbye)\n"); |
|
60 | con_exit(0); |
62 | con_exit(0); |
61 | return 0; |
63 | return 0; |