Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
| Ambos lados da revisão anterior Revisão anterior | |||
| pua:cliente_tcp [2010/09/30 00:33] – maziero | pua:cliente_tcp [2014/03/27 12: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; | ||
| + | } | ||
| + | </ | ||