Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Próxima revisão
Revisão anterior
pua:cliente_tcp [2008/08/13 21:29] – created mazieropua:cliente_tcp [2014/03/27 09:29] (atual) maziero
Linha 1: Linha 1:
 +====== 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.
 +
 +<code c 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;
 +}
 +</code>