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 .