Este exemplo apresenta um pequeno servidor WWW que atende na porta TCP 8888 e responde aos clientes com uma pequena mensagem pré-definida.
#include <stdio.h> #include <errno.h> #include <sys/socket.h> #include <resolv.h> #include <arpa/inet.h> #define PORT 8888 int main (int argc, char *argv[]) { int serversock; struct sockaddr_in self; /* cria o socket */ serversock = socket (AF_INET, SOCK_STREAM, 0) ; if ( serversock < 0 ) { perror("Erro no socket"); exit(1); } /* monta o endereço */ bzero (&self, sizeof(self)); self.sin_family = AF_INET; self.sin_port = htons(PORT); self.sin_addr.s_addr = INADDR_ANY; /* uso o endereço do host */ /* associa o endereço ao socket */ if ( bind (serversock, (struct sockaddr*)&self, sizeof(self)) ) { perror("Erro no bind"); exit(1); } /* coloca o socket em escuta */ if ( listen (serversock, 20) ) { perror("Erro no listen"); exit(1); } while (1) { int clientsock; struct sockaddr_in client_addr; int addrlen = sizeof (client_addr); char * resposta ; /* aguarda e aceita uma conexão externa */ clientsock = accept (serversock, (struct sockaddr*)&client_addr, &addrlen); printf ("Client %s:%d connected\n", inet_ntoa (client_addr.sin_addr), ntohs (client_addr.sin_port)); /* envia uma resposta HTTP padrão */ resposta = "HTTP/1.1 200 Ok\n\nFunciona mesmo !\n" ; write (clientsock, resposta, strlen (resposta)); /* fecha o socket da conexão recebida */ close (clientsock); } /* encerra o socket servidor */ close (serversock); return 0; }