3  dichiarare e inizializzare le variabili necessarie per la presa di trasferimento di file , aggiungendo il seguente codice nella parte superiore della tua funzione principale : < br 
 int port > = 4455 ; int sock_fd ; int sock_desc ; int file_fd ; struct stat stat_buf ; off_t file_offset = 0; char file_name [ PATH_MAX ] ; struct addrinfo addr , * rs ; struct sockaddr_in addr1 ; int addrlen ; < br 
 strcpy > ( nome_file , " myfile.txt "); 
 4 
 Inizializzare le struct di indirizzo , con l'aggiunta del seguente codice : 
 
 memset ( & addr , 0 , sizeof addr ) ; addr.ai_family = AF_UNSPEC ; addr.ai_socktype = SOCK_STREAM ; addr.ai_flags = AI_PASSIVE ; 
 
 getaddrinfo ( NULL , porto, & addr , & rs ) ; 
 5 
 Creare un nuovo socket , legano la presa e impostarlo per l'ascolto di tutte le connessioni in ingresso , aggiungendo il seguente codice : 
 
 sock_fd = socket ( rs - > ai_family , rs - > ai_socktype , rs - > ai_protocol ) ; bind ( sockfd , rs - > ai_addr , rs - > ai_addrlen ) ; ascolta ( sock_fd , 1) ; 
 6 
 Creare un ciclo "while" e attendere per una connessione in entrata , digitando il seguente codice : 
 
 while (true ) { sock_desc = accept ( sock_fd , ( struct sockaddr * ) & addr1 , & addrlen ) ; 
 7 < p > Aprire il file che si desidera trasferire e inviarlo con la funzione " sendfile " , aggiungendo il seguente codice : 
 
 file_fd = open ( nome_file , O_RDONLY ) ; fstat ( file_fd , e stat_buf ) ; 
 
 file_offset = 0; sendfile ( sock_desc , file_fd , e file_offset , stat_buf.st_size ) ; 
 8 
 chiudere il file descrittore di socket e la presa una volta che hai finito di inviare il di file , aggiungendo il seguente codice : 
 
 vicino ( file_fd ) ; close ( sock_desc );} 
 
 vicino ( sock_fd ) ; 
 9 
 Salvare il file sorgente . Compilare ed eseguire il programma per inviare un file tramite un socket .