3 Deklarieren und initialisieren die Variablen , die für die file-Transfer- Buchse, indem Sie den folgenden Code am Anfang Ihrer Hauptfunktion :
int port = 4455 ; int sock_fd ; int sock_desc ; int file_fd ; struct stat stat_buf ; off_t file_offset = 0; char Dateiname [ PATH_MAX ] ; struct addrinfo addr , * rs ; struct sockaddr_in addr1 ; int addrlen ;
strcpy ( Dateiname " myfile.txt ");
4
initialisieren Adresse Strukturen, indem Sie den folgenden Code :
memset ( & addr , 0 , sizeof addr) ; addr.ai_family = AF_UNSPEC ; addr.ai_socktype = SOCK_STREAM ; addr.ai_flags = AI_PASSIVE ;
getaddrinfo (NULL , Port, & addr & rs) ;
5
erstellen Sie eine neue Buchse, binden die Steckdose , und stellen Sie für jede eingehende Verbindungen , indem Sie den folgenden Code:
sock_fd = socket (rs -> ai_family , rs- > ai_socktype , rs- > ai_protocol ); bind ( sockfd , rs- > ai_addr , rs- > ai_addrlen ); anhören ( sock_fd , 1);
6
erstellen Sie eine " while"-Schleife und warten für eine eingehende Verbindung , indem Sie den folgenden Code:
while ( true) { sock_desc = accept ( sock_fd , (struct sockaddr *) & addr1 & addrlen );
7 < p> Öffnen Sie die Datei, die Sie übertragen möchten, und schicken Sie es mit dem " sendfile "-Funktion , indem Sie den folgenden Code:
file_fd = open ( dateiname , O_RDONLY ); fstat ( file_fd & stat_buf );
file_offset = 0; sendfile ( sock_desc , file_fd & file_offset , stat_buf.st_size );
8
Schließen Sie die Datei , Socket-Deskriptor und die Buchse , wenn Sie fertig sind, sendet die Datei , indem Sie den folgenden Code:
close ( file_fd ); close ( sock_desc );}
close ( sock_fd );
9
Speichern Sie die Quelldatei . Kompilieren und starten Sie das Programm , um eine Datei mit einem Socket zu senden .