#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <sys/param.h>
#include <sys/uio.h>
#include <unistd.h>
#include <netinet/in.h>
#include <string.h>

#define BUFFSIZE        256

int Connect(char *dom, char *path)
{
        char send_buf[BUFFSIZE];
        int socketnum;
        struct hostent *hos;
        struct sockaddr_in sin;
        struct servent *serv;
        
        hos = gethostbyname(dom);
        if( hos == NULL )
        {
                fprintf(stderr, "IPアドレスへの変換に失敗");
                return 0;
        }
        
        memset(&sin, 0, sizeof(sin));
        
        sin.sin_family = AF_INET;
        
        memcpy(&sin.sin_addr, hos->h_addr, hos->h_length);
        
        serv = getservbyname(SERVICE_NAME, PROTOCOL);
        
        if(serv != NULL)
        {
                sin.sin_port = serv->s_port;
        }

        
        if( ( socketnum = socket(AF_INET, SOCK_STREAM, 0)) < 0)
        {
                fprintf(stderr, "ソケットの生成に失敗しました\n");
                return 1;
        }
        
        if( connect(socketnum, (struct sockaddr *)&sin, sizeof(sin)) == -1)
        {
                fprintf(stderr, "connectに失敗しました\n");
                return 1;
        }
        
        sprintf(send_buf, "GET %s HTTP/1.0\r\n", path);
        write(socketnum, send_buf, strlen(send_buf));
        
        sprintf(send_buf, "HOST: %s:%d\r\n", dom, 80);
        write(socketnum, send_buf, strlen(send_buf));
        
        sprintf(send_buf, "\r\n");
        write(socketnum, send_buf, strlen(send_buf));
        
        while(1)
        {
                char buf[BUFFSIZE];
                int read_size;
                read_size = read(socketnum, buf, BUFFSIZE);
                if(read_size > 0)
                {
                        write(1, buf, read_size);
                }
                else
                {
                        break;
                }
        }
        
        close(socketnum);
}

int main(int argc , char *argv[])
{
        char send_buf[BUFFSIZE];
        
        Connect(argv[1],argv[2]);
        return;
}