3 Deklarera och initiera variabler som krävs för filöverföring uttaget , genom att lägga till följande kod på toppen av din huvudsakliga funktion :
int port = 4455 ; int sock_fd , int sock_desc , int file_fd ; struct stat stat_buf , off_t file_offset = 0; char filnamn [ PATH_MAX ] ; struct addrinfo addr , * rs ; struct sockaddr_in addr1 , int addrlen ;
strcpy ( filnamn , " minfil.txt " ) ;
4
initiera adress structs , genom att lägga till följande kod :
memset ( & addr , 0 , sizeof addr ) ; addr.ai_family = AF_UNSPEC , addr.ai_socktype = SOCK_STREAM , addr.ai_flags = AI_PASSIVE ;
getaddrinfo ( NULL , hamn , & addr , & rs ) ;
5
Skapa en ny socket , binder uttaget och ställ in den för att lyssna efter inkommande anslutningar , genom att lägga till följande kod :
sock_fd = socket ( RS - > ai_family , RS - > ai_socktype , rs - > ai_protocol ) , bind ( sockfd , RS - > ai_addr , RS - > ai_addrlen ) , lyssna ( sock_fd , 1 ) ;
6
Skapa en " tag " loop och vänta för en inkommande anslutning , genom att skriva följande kod :
while ( true ) { sock_desc = accepterar ( sock_fd , ( struct sockaddr * ) & addr1 , & addrlen ) ,
7
Öppna den fil du vill överföra och skicka det med " sendfile " -funktion , genom att lägga till följande kod :
file_fd = open ( filnamn , O_RDONLY ) ; fstat ( file_fd , & stat_buf ) ;
file_offset = 0; sendfile ( sock_desc , file_fd , & file_offset , stat_buf.st_size ) ;
8
Stäng filen , socket deskriptor och uttaget när du är klar skickar fil , genom att lägga till följande kod :
close ( file_fd ) , close ( sock_desc ) ;}
close ( sock_fd ) ,
9
Spara källfilen . Kompilera och kör programmet för att skicka en fil med en socket .