Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza Informatica >> Programmazione >> C /C + + Programming >> .

Come scrivere una semplice console di File Transfer Programma Socket

Creazione di un programma di presa semplice che consente di trasferire un file tra due server è un ottimo modo per ampliare le vostre conoscenze di programmazione dei socket . Una presa si lega a una porta specifica e si connette a un'altra presa per creare una connessione bidirezionale . Per inviare un file , è necessario creare un socket , legarlo , ascoltare per una connessione , accettare la connessione e poi inviarlo a un altro server - utilizzando la funzione " sendfile " . Istruzioni
1

Aprire il file C nell'ambiente di sviluppo integrato preferito .
2

includere i file di intestazione per accedere a tutti i tipi di dati necessari e le funzioni , aggiungendo il seguente codice nella parte superiore del file :

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

dichiarare e inizializzare le variabili necessarie per la presa di trasferimento di file , aggiungendo il seguente codice nella parte superiore della tua funzione principale : < 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 > ( nome_file , " myfile.txt ");
4

Inizializzare le struct di indirizzo , con l'aggiunta del seguente codice :

memset ( & addr , 0 , sizeof addr ) ; addr.ai_family = AF_UNSPEC ; addr.ai_socktype = SOCK_STREAM ; addr.ai_flags = AI_PASSIVE ;

getaddrinfo ( NULL , porto, & addr , & rs ) ;
5

Creare un nuovo socket , legano la presa e impostarlo per l'ascolto di tutte le connessioni in ingresso , aggiungendo il seguente codice :

sock_fd = socket ( rs - > ai_family , rs - > ai_socktype , rs - > ai_protocol ) ; bind ( sockfd , rs - > ai_addr , rs - > ai_addrlen ) ; ascolta ( sock_fd , 1) ;
6

Creare un ciclo "while" e attendere per una connessione in entrata , digitando il seguente codice :

while (true ) { sock_desc = accept ( sock_fd , ( struct sockaddr * ) & addr1 , & addrlen ) ;
7

Aprire il file che si desidera trasferire e inviarlo con la funzione " sendfile " , aggiungendo il seguente codice :

file_fd = open ( nome_file , O_RDONLY ) ; fstat ( file_fd , e stat_buf ) ;

file_offset = 0; sendfile ( sock_desc , file_fd , e file_offset , stat_buf.st_size ) ;
8

chiudere il file descrittore di socket e la presa una volta che hai finito di inviare il di file , aggiungendo il seguente codice :

vicino ( file_fd ) ; close ( sock_desc );}

vicino ( sock_fd ) ;
9

Salvare il file sorgente . Compilare ed eseguire il programma per inviare un file tramite un socket .

 

Programmazione © www.354353.com