3 déclarer et initialiser les variables nécessaires à la prise de transfert de fichier , en ajoutant le code suivant au début de votre fonction principale :
int port = 4455 ; int sock_fd ; int sock_desc ; int file_fd ; struct stat stat_buf ; off_t file_offset = 0; caractères nom_fichier [ PATH_MAX ] ; struct addrinfo adr , * rs ; struct sockaddr_in addr1 ; int addrlen ; < br >
strcpy ( nom_fichier , " monfichier.txt ");
4
initialiser la struct d'adresses, en ajoutant le code suivant :
memset ( & addr, 0 , sizeof adr ) ; addr.ai_family = AF_UNSPEC ; addr.ai_socktype = SOCK_STREAM ; addr.ai_flags = AI_PASSIVE ;
getaddrinfo (NULL , le port, et adr , & rs ) ;
5
Créer un nouveau socket, bind la prise et le mettre à l'écoute de toutes les connexions entrantes , en ajoutant le code suivant :
sock_fd = socket ( rs- > ai_family , rs- > ai_socktype rs- > ai_protocol ) ; bind ( sockfd , rs- > ai_addr , rs- > ai_addrlen de la structure ) ; écouter ( sock_fd , 1);
6
créer une boucle "while" et attendre pour une connexion entrante , en tapant le code suivant :
while ( true) { sock_desc = accept ( sock_fd , (struct sockaddr *) & addr1 , et addrlen ) ;
7 < p> Ouvrez le fichier que vous souhaitez transférer et l'envoyer avec la fonction " sendfile " , en ajoutant le code suivant :
file_fd = open ( nom_fichier , O_RDONLY ) ; fstat ( file_fd , et stat_buf ) ; Photos
file_offset = 0; sendfile ( sock_desc , file_fd , et file_offset , stat_buf.st_size ) ;
8
fermez le fichier , descripteur prise et la prise une fois que vous avez terminé l'envoi de la fichier, en ajoutant le code suivant :
proche ( file_fd ) ; close ( sock_desc );}
proche ( sock_fd ) ;
9
Enregistrez le fichier source . Compiler et exécuter le programme pour envoyer un fichier en utilisant une prise de courant.