Sistemi di elaborazione dell'informazione / Reti

Esempio Socket Client in C

/*file client1.c */
/* implementazione di client per un server locale con porta 9000*/

#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <netinet/in.h>
#include <stdlib.h>

#define Max 8000

int main(void) {
int sd;
struct sockaddr_in client;
struct hostent *hp; /* risultato della ricerca del nome dell'host */
unsigned short port = 9000;
char buff[Max];

/* Dobbiamo riempire la struttura client ma prima
* ci occorrono alcune
* informazioni che ricaviamo appoggiandoci
* alla struttura hp
*/

// traduco il nome della macchina remota nell'indirizzo IP

hp = gethostbyname("www.dacrema.com");

/* Setto i primi n bytes della stringa passata come primo argomento come bytes nulli.*/

bzero(&client, sizeof(client));

//Inizializzo la sockaddr_in
client.sin_family = AF_INET;
client.sin_port = htons(port);
client.sin_addr.s_addr =((struct in_addr*)(hp->h_addr))->s_addr;

/* Creiamo il socket */

if((sd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
printf("Errore nella creazione del socket!\n");
else
printf("socket creato!\n");

/* connettiamoci all'host */

if (connect(sd, (struct sockaddr *)&client, sizeof(client)) < 0)
printf("Errore di connessione!\n");

/* Inviamo dei dati */

send(sd, "Dati inviati dal client", strlen("Dati inviati dal client")+1, 0);

/*riceviamo la risposta */

recv(sd, buff, sizeof(buff), 0);
printf("Risposta del server: %s\n", buff);
close(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.