socketでHTTPクライアントを作ってみる

#include <stdio.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>

int main(void) {
    int sock = socket(AF_INET, SOCK_STREAM, 0);
    struct sockaddr_in sock_in;

    sock_in.sin_family = AF_INET;
    sock_in.sin_port = htons(80);

    struct hostent *host;
    host = gethostbyname("localhost");
    sock_in.sin_addr.s_addr = *(unsigned int *)host->h_addr_list[0];

    connect(sock, (struct sockaddr *)&sock_in, sizeof(sock_in));

    FILE* fp = fdopen(sock, "r+");
    char buf[4096];

    fprintf(fp,"GET / HTTP1.0\r\n\r\n");

    while(fgets(buf, sizeof(buf), fp) != NULL) {
        printf("%s", buf);
    }

    fclose(fp);
    close(sock);

    return 0;
}