Exemplo TCP: Um micro-cliente WWW

Este exemplo implementa um pequeno cliente WWW que se conecta a um servidor pré-definido e exibe sua página web principal.

www-client.c
#include <stdio.h>
#include <unistd.h>
#include <resolv.h>
#include <sys/socket.h>
 
#define PORT       80
#define SERVER     "127.0.0.1"
#define BUFSIZE    256
 
int main()
{
   int sock, bytes;
   struct sockaddr_in server;
   char *pedido, resposta[BUFSIZE];
 
    /* cria um socket TCP */
    sock = socket (AF_INET, SOCK_STREAM, 0) ;
    if ( sock < 0 )
    {
        perror ("Erro na criação do socket");
        exit(1);
    }
 
    /* inicializa a estrutura com endereço/porta do servidor */
    bzero (&server, sizeof(server));
    server.sin_family = AF_INET;
    server.sin_port   = htons(PORT);
    if ( inet_aton (SERVER, &server.sin_addr.s_addr) == 0 )
    {
        perror("Erro no endereço do servidor");
        exit(1);
    }
 
    /* conecta ao servidor */
    if ( connect (sock, (struct sockaddr*)&server, sizeof(server)) != 0 )
    {
        perror("Erro na conexão");
        exit(1);
    }
 
    /* envia comando HTTP ao servidor */
    pedido = "GET / HTTP/1.0\n\n" ;
    write (sock, pedido, strlen (pedido)) ;
 
    /* resposta do servidor vai para STDOUT */
    while ( (bytes = read (sock, &resposta, BUFSIZE)) > 0 )
       write (STDOUT_FILENO, resposta, bytes);
 
    /* encerra a conexão */
    close (sock);
 
    return 0;
}