Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Ako napísať jednoduchý Console File Transfer Socket program

Vytvorenie jednoduchého soketu program , ktorý prenáša súbor medzi dvoma servermi je skvelý spôsob , ako rozšíriť svoje vedomosti o socket programovania . Zásuvka sa viaže k určitému portu a pripojí k inému konektoru vytvoriť obojsmerné pripojenie . Ak chcete odoslať súbor , musíte vytvoriť socket , zviazať ho , počúvať spojenie , prijmite pripojenie a odošlite ju na iný server - pomocou " sendfile " funkciu . Pokyny dovolená 1

Otvorte C súbor v preferovanej integrované vývojové prostredie .
2

hlavičkové súbory pre prístup k všetky potrebné dátové typy a funkcie , pridaním nasledujúceho kódu v hornej časti súboru : Spojené

# include # include # include # include # include < sys /sendfile.h > # include # include # include # include # include < štádiách . h > # include
3

deklarovať a inicializovať premenné potrebné pre prenos súborov zásuvke , pridaním nasledujúceho kódu na hornej časti hlavné funkcie :

int port = 4455 ; int sock_fd , int sock_desc , int file_fd , struct stat stat_buf ; off_t file_offset = 0 ; char názov_súboru [ PATH_MAX ] ; struct addrinfo addr , * rs ; struct sockaddr_in addr1 , int addrlen ,

strcpy ( FILE_NAME , " file.txt " ) ;
4

Inicializácia adresy structs , pridaním nasledujúceho kódu :

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

getaddrinfo ( NULL , port , a addr , a rs ) ;
5

Vytvoriť nový socket , zviazať socket a nastavte ju na počúvanie pre všetky prichádzajúce pripojenie , pridaním nasledujúceho kódu :

sock_fd = zásuvka ( rs - > ai_family , rs - > ai_socktype , rs - > ai_protocol ) , bind ( sockfd , rs - > ai_addr , rs - > ai_addrlen ) ; počúvať ( sock_fd , 1 ) ;
6

Vytvoriť " , zatiaľ čo " slučky a počkajte , pre prichádzajúce spojenia , zadaním nasledujúci kód :

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

Otvorte súbor , ktorý chcete previesť , a odoslať ju pomocou funkcie " sendfile " , pridaním nasledujúceho kódu :

file_fd = open ( FILE_NAME , O_RDONLY ) ; fstat ( file_fd , a stat_buf ) ;

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

Zatvorte súbor , socket deskriptor a zásuvky , akonáhle ste hotoví odoslanie súbor , pridaním nasledujúceho kódu :

close ( file_fd ) ; close ( sock_desc ) ; } klipart

úzke ( sock_fd ) ;
9

Uložte zdrojový súbor . Kompilácie a spustenie programu odoslať súbor pomocou zásuvky .

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené