Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
Próxima revisão | Revisão anterior | ||
pua:cliente_tcp [2008/08/13 21:29] – created maziero | pua: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 < | ||
+ | #include < | ||
+ | #include < | ||
+ | #include < | ||
+ | |||
+ | #define PORT 80 | ||
+ | #define SERVER | ||
+ | #define BUFSIZE | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | int sock, bytes; | ||
+ | | ||
+ | char *pedido, resposta[BUFSIZE]; | ||
+ | |||
+ | /* cria um socket TCP */ | ||
+ | sock = socket (AF_INET, SOCK_STREAM, | ||
+ | if ( sock < 0 ) | ||
+ | { | ||
+ | perror ("Erro na criação do socket" | ||
+ | exit(1); | ||
+ | } | ||
+ | |||
+ | /* inicializa a estrutura com endereço/ | ||
+ | bzero (& | ||
+ | server.sin_family = AF_INET; | ||
+ | server.sin_port | ||
+ | if ( inet_aton (SERVER, & | ||
+ | { | ||
+ | perror(" | ||
+ | exit(1); | ||
+ | } | ||
+ | |||
+ | /* conecta ao servidor */ | ||
+ | if ( connect (sock, (struct sockaddr*)& | ||
+ | { | ||
+ | perror(" | ||
+ | exit(1); | ||
+ | } | ||
+ | | ||
+ | /* envia comando HTTP ao servidor */ | ||
+ | pedido = "GET / HTTP/ | ||
+ | write (sock, pedido, strlen (pedido)) ; | ||
+ | | ||
+ | /* resposta do servidor vai para STDOUT */ | ||
+ | while ( (bytes = read (sock, & | ||
+ | write (STDOUT_FILENO, | ||
+ | |||
+ | /* encerra a conexão */ | ||
+ | close (sock); | ||
+ | |||
+ | return 0; | ||
+ | } | ||
+ | </ | ||