3 Verklaar en initialiseren van de variabelen die nodig zijn voor de bestandsoverdracht socket , door toevoeging van de volgende code aan de bovenkant van uw belangrijkste functie : < 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 > ( bestandsnaam , " myfile.txt " ) ;
4
Initialiseer het adres structs , door toevoeging van de volgende code :
memset
( & addr , 0 , sizeof addr ) ; addr.ai_family = AF_UNSPEC ; addr.ai_socktype = SOCK_STREAM ; addr.ai_flags = AI_PASSIVE ;
getaddrinfo
( NULL , port , en addr , & rs ) ;
5
Maak een nieuwe socket , binden het stopcontact en zet deze om naar te luisteren voor inkomende verbindingen , door toevoeging van de volgende code :
sock_fd = socket
( rs - > ai_family , rs - > Argumentenbuffer is te klein , rs - > ai_protocol ) , bind ( sockfd , rs - > ai_addr , rs - > ai_addrlen ) ; luister ( sock_fd , 1 ) ;
6
Maak een lus "terwijl" en wacht voor een inkomende verbinding , door het intikken van de volgende code :
while (true ) { sock_desc = accept ( sock_fd , ( struct sockaddr * ) & addr1 , & addrlen ) ;
7
Open het bestand dat u wilt overbrengen en stuur het met de functie " sendfile " , door toevoeging van de volgende code :
file_fd = open
( bestandsnaam , O_RDONLY ) ; fStat ( file_fd , & stat_buf ) ;
file_offset = 0
; sendfile ( sock_desc , file_fd , & file_offset , stat_buf.st_size ) ;
8
Sluit het bestand , socket descriptor en het stopcontact als je eenmaal klaar bent met het verzenden van de bestand , door toevoeging van de volgende code :
dicht
( file_fd ) ; dicht ( sock_desc ) ; }
dicht
( sock_fd ) ;
9
Sla het bronbestand . Compileren en uitvoeren van het programma om een bestand met een aansluiting worden gestuurd .