1
Abra el archivo C en el entorno de desarrollo integrado preferido.
2
Incluya los archivos de cabecera para acceder a todos los tipos de datos y funciones necesarias , añadiendo el siguiente código en la parte superior de su archivo :
declarar e inicializar las variables necesarias para la toma de transferencia de archivos, añadiendo el siguiente código en la parte superior de su función principal : int port = 4455 ; sock_fd int , int sock_desc ; int file_fd ; struct stat stat_buf ; off_t file_offset = 0 ; carbón nombre_archivo [ PATH_MAX ] ; struct addrinfo addr, * rs ; struct sockaddr_in addr1 ; int addrlen ; strcpy ( nombre_archivo , " miarchivo.txt "); Inicializar las estructuras de dirección , añadiendo el siguiente código: memset (& addr, 0 , sizeof addr ) ; addr.ai_family = AF_UNSPEC ; addr.ai_socktype = SOCK_STREAM ; addr.ai_flags = AI_PASSIVE ; getaddrinfo (NULL , el puerto , y addr, y rs) ; Crear un nuevo socket , ata el casquillo y la colocó para escuchar las conexiones entrantes , añadiendo el siguiente código: sock_fd = socket ( rs -> ai_family , rs -> ai_socktype , rs -> ai_protocol ) ; bind ( sockfd , rs -> ai_addr , rs -> ai_addrlen ), escuchar ( sock_fd , 1 ) ; Crear un bucle "while" y esperar una conexión entrante , escriba el siguiente código: while ( true) { sock_desc = accept ( sock_fd , (struct sockaddr *) y addr1 , y addrlen ) ; file_fd = open ( nombre_archivo , O_RDONLY ) ; fstat ( file_fd , y stat_buf ) ; file_offset = 0 ; sendfile ( sock_desc , file_fd , y file_offset , stat_buf.st_size ) ; cierre el archivo descriptor de socket y la toma una vez que haya terminado de enviar el archivo, añadiendo el siguiente código: close ( file_fd ), close ( sock_desc ) ;} close ( sock_fd ) ; Guardar el archivo de origen . Compilar y ejecutar el programa para enviar un archivo mediante un socket.
3
4
5
6
7 < p> Abra el archivo que desea transferir y enviarlo con la función " sendfile " , añadiendo el siguiente código:
8
9