Subversion Repositories Kolibri OS

Rev

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;