codice:
	/* Programma per comunicare con un servere Pop3. 
 * 24/01/2009
 *//* Variables and costants definition */
    
	int nmail;
	gchar *addr, *user, *pass;
/* Main program begin */
void *checkm()
{   
	/* Local variables definition */
	#define MAXLINE 256
    int sock_fd;
    struct sockaddr_in serv_add;
	
    char recvbuff[MAXLINE+1], sendbuff1[MAXLINE+1] = "user ", sendbuff2[MAXLINE+1] = "pass ", sendbuff3[MAXLINE+1] = "stat\r\n";
    int nread, nwrite; 
	
    strcat(sendbuff1, user);
    strcat(sendbuff1, "\r\n");
    strcat(sendbuff2, pass);
    strcat(sendbuff2, "\r\n");
	
	/* create socket */
    if ( (sock_fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
	perror("Socket creation error");
    }
	
	
    /* initialize address */
    memset((void *) &serv_add, 0, sizeof(serv_add)); /* clear server address */
    serv_add.sin_family = AF_INET;                   /* address type is INET */
    serv_add.sin_port = htons(110);                    /* 110 da pop3 protocol */
    
	
	/* build address using inet_pton */
    if ( (inet_pton(AF_INET, addr, &serv_add.sin_addr)) <= 0) { /* ottengo l'indirizzo del server, che viene fornito come argomento */
	perror("Address creation error");				/* Il server deve essere in formato dotted decimal */
    }
    
	
	/* extablish connection */
    if (connect(sock_fd, (struct sockaddr *)&serv_add, sizeof(serv_add)) < 0) {
	perror("Connection error");
    }
    
	
	/* avvia funzione di comunicazione con il server */
 
	/* Ricevo il saluto dal server */
    nread = read(sock_fd, recvbuff, sizeof(recvbuff)); //sizeof: per leggere fino alla fine
    recvbuff[nread] = 0;
    fputs(recvbuff, stdout);
	
	
    /* Comunico al server il comando per il log-in/utente (es. "user domenan")*/
    nwrite = send(sock_fd, sendbuff1, strlen(sendbuff1), 0);  
	
	
    /* Ricevo la risposta del server */
    nread= recv(sock_fd, recvbuff, sizeof(recvbuff), 0);
    recvbuff[nread] = 0;
    fputs(recvbuff, stdout);
	
	
    /* Comunico al server il comando per il log-in/pass (es. "pass domenan")*/
	nwrite = send(sock_fd, sendbuff2, strlen(sendbuff2), 0);  
	
	
    /* Ricevo la risposta del server */
    nread= recv(sock_fd, recvbuff, sizeof(recvbuff), 0);
    recvbuff[nread] = 0;
    fputs(recvbuff, stdout);
	
	
    /* Comunico al server il comando per vedere quanti messaggi sono presenti (es. "stat")*/
    nwrite = send(sock_fd, sendbuff3, strlen(sendbuff3), 0);  
	
	
    /* Ricevo la risposta del server */
    nread= recv(sock_fd, recvbuff, sizeof(recvbuff), 0);
    recvbuff[nread] = 0;
    fputs(recvbuff, stdout);
	
	
	/* Estraggo il numero che indentifica la quantità di e-mail*/   
 	sscanf (recvbuff, "+OK %d", &nmail);
    printf("%d\n", nmail);
	
	/* Visualizzo il numero delle mail sulla label1win */  	
	smail = g_strdup_printf ("%d",nmail);
	gtk_label_set_text(GTK_LABEL(label1win), smail);
	
	/* Chiuso la connessione*/  
	close(sock_fd);
	
	
	return(0);
}
 
Ecco il comando presente nel codice main.c che avvia la funzione precedentemente postata: