/* file server_i.c */
/* Implementazione di server iterativo */
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <stdlib.h>
#define Max 8000
int main(void) {
char buff[Max];
struct sockaddr_in server;
struct sockaddr_in client;
int sd, temp_sd;
int address_size;
unsigned short port = 9000;
/* Creiamo il socket e riempiamo i campi della struttura
server
*/
if ( (sd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
printf("Errore nella craazione del server!\n");
server.sin_family = AF_INET;
server.sin_port = htons(port);
server.sin_addr.s_addr = INADDR_ANY; //indirizzo jolly
/* assegnamo al socket un processo tramite la funzione BIND */
if (bind(sd, (struct sockaddr *)&server, sizeof(server)) < 0)
printf("Errore nella chiamata di sistema BIND!\n");
/* Mettiamolo in ascolto */
listen (sd, 20);
/* il nostro č un socket bloccante, secondo
* quanto esposto in precedenza, quindi
* non occorre un gestione troppo oculata
* delle connessioni infatti....*/
while(1) {
if ((temp_sd= accept(sd, (struct sockaddr *)&client, &address_size)) <
0)
printf("Errore nella chiamata ACCEPT\n");
/*Riceviaimo i dati dal client */
recv(temp_sd, buff, sizeof(buff), 0);
printf("Dati ricevuti : %s", buff);
/* Spediamo qualcosa */
strcpy(buff, "Tutto OK!");
send(temp_sd, buff, strlen(buff), 0);
close(temp_sd);
}
return EXIT_SUCCESS;
}
Tutto quanto riportato in questa pagina č a puro scopo informativo personale. Se non ti trovi in accordo con quanto riportato nella pagina, vuoi fare delle precisazioni, vuoi fare delle aggiunte o hai delle proposte e dei consigli da dare, puoi farlo mandando un email. Ogni indicazione č fondamentale per la continua crescita del sito.