“Conocimientos Programación>C /C + + Programming

Cómo escribir un programa Socket File Transfer consola simple

2014/11/7
Creación de un programa de socket simple que transfiere un archivo entre dos servidores es una gran manera de ampliar su conocimiento de la programación del zócalo . Un zócalo se une a un puerto específico y se conecta a otro enchufe para crear una conexión de dos vías . Para enviar un archivo , debe crear un socket, ligarlo, escucha de una conexión, aceptar una conexión y luego enviarlo al otro servidor - con ayuda de la función « sendfile " . Instrucciones
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 :

# include # include # include # include # include < sistema /sendfile.h > # include # include # include # include # include < stdio . h> # include
3

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 ");
4

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) ;
5

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 ) ;
6

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 ) ;
7 < p> Abra el archivo que desea transferir y enviarlo con la función " sendfile " , añadiendo el siguiente código:

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 ) ;
8

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 ) ;
9

Guardar el archivo de origen . Compilar y ejecutar el programa para enviar un archivo mediante un socket.

C /C + + Programming
Cómo Iniciar sesión para Papaya Android
Cómo utilizar Visual C 6
Cómo utilizar los archivos esqueléticos en OGRE
Cómo hacer un C + + ventana principal sin una barra de título
Cómo utilizar GDB Con Eclipse
Diferencia entre fgetc y getc
Cómo ver la pila de llamadas en GDB
Cómo abrir un archivo PDF en C #
Conocimientos Informáticos © http://www.ordenador.online