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 vyčistiť vyrovnávaciu pamäť pre príjem zásuvka C

Pri prijímaní dát zo zásuvky do vyrovnávacej pamäti , je dôležité zistiť , kedy je zásuvka zavrie , takže nemusíte čakať na ďalšie pakety na dobu neurčitú . Windows Sockets API ( winsock ) poskytuje rozhranie pre váš program v jazyku C pre interakciu so základnou TCP /IP protokol stack . Zbierajte informácie hostiteľskom serveri , vytvorte zásuvku , pripojte ho k hostiteľovi a potom prijímať dáta pomocou funkcie " recv " do vyrovnávacej pamäti , kým sa zobrazí chybové hlásenie alebo hlásenie " TCP FIN " . Pokyny dovolená 1

Otvorte C súbor v editore , ako je napríklad Microsoft Visual Studio Express .
2

Zahrnúť hlavičku nevyhnutné pre prácu so zásuvkami a súborov pridaním nasledujúceho kódu v hornej časti súboru : Spojené

# include klipart

# include klipart

# include

3

Načítať informácie hostiteľa s funkciou " getaddrinfo " pridaním nasledujúci kód do vašich funkcie :

struct addrinfo rady , * res ;

int sfd ;

char bufferu [ 512 ] ;

int nrecv ;

memset ( a rady , 0 , sizeof rady ) ;

hints.ai_socktype = SOCK_STREAM ;

hints.ai_family = AF_UNSPEC ;

getaddrinfo ( " www.server.com " , " 3500 " , a rady , a res ) ;

Vymeňte hostiteľa adresu " www.server.com " a port " 3500 " s informáciami o serveri , že ste pripájate . " SOCK_STREAM " hodnota znamená , zásuvka bude používať protokol TCP , ktorý je spoľahlivý obojsmerný pripojenie
4

vytvoriť zásuvku s informáciami o hostiteľskej pridaním nasledujúceho kódu : .

sfd = socket ( res - > ai_family , res - > ai_socktype , res - > ai_protocol ) ;
5

Prepojte zásuvku pomocou funkcie " pripojiť " , pomocou popisovač súboru z " " funkcia socket , pridaním nasledujúceho kódu :

pripojenie ( sfd , res - > ai_addr , res - > ai_addrlen ) ;
6

Otvorte súbor , ktorý chcete písať s " fopen " funkcie pridaním nasledujúci kód :

FILE * fp ;

fp = fopen ( " file.rar " , " wb " ) ;
7

Prijímanie informácií do pamäte pomocou funkcie " recv " pridaním nasledujúceho kódu :

int num_written = 0 ;

while ( ( nrecv = recv ( sfd , buffer , sizeof vyrovnávacej pamäti , 0 ) ) > 0 ) {

char * pbuf = vyrovnávacej pamäti ;

while ( nrecv > 0 ) {

num_written = fwrite ( pbuf , sizeof ( char ) , nrecv , fp ) ;

pbuf + = num_written ;

nrecv - = num_written ;

}

}

slučka bude pokračovať v prijímaní informácií , kým nebude chyba , ktorá vracia zápornú hodnotu , alebo kým dostane správu " TCP FIN " , ktorý má hodnotu 0.
8

Uložte súbor C , kompilovať a spúšťať program pre príjem informácií z pripojenia soketu .

Najnovšie články

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