Aprire il file C nell'ambiente di sviluppo integrato preferito .
2
includere i file di intestazione per accedere a tutti i tipi di dati necessari e le funzioni , aggiungendo il seguente codice nella parte superiore del file :
# include 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 "); 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 ) ; 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) ; 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 ) ; 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 ) ; 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 ) ; Salvare il file sorgente . Compilare ed eseguire il programma per inviare un file tramite un socket .
3
4
5
6
7
8
9
Informazioni correlate
Programmazione © www.354353.com