< br >
3 Haal de gastheer informatie met de functie " getaddrinfo " door toevoeging van de volgende code in je functie :
struct addrinfo hints , * res ;
int sfd ;
char buffer
[ 512 ] ;
int nrecv
;
memset
( & hints , 0 , sizeof hints ) ;
hints.ai_socktype
= SOCK_STREAM ;
hints.ai_family
= AF_UNSPEC ;
getaddrinfo
( " www.server.com " , " 3500 " , & hints , & res ) ;
Vervang de host- adres van " www.server.com " en de haven van " 3500 " met de informatie voor de server waarmee u verbinding maakt . De " SOCK_STREAM " waarde geeft de socket zal TCP , dat is een betrouwbare twee-weg verbinding te gebruiken
4
Maak een stopcontact met de host gegevens door toevoeging van de volgende code : .
sfd = socket ( res - > ai_family , res - > Argumentenbuffer is te klein , res - > ai_protocol ) ;
5
Verbind de aansluiting met de functie " connect " , met behulp van de file descriptor van de " socket functie " , door toevoeging van de volgende code :
connect
( SFD , res - > ai_addr , res - > ai_addrlen ) ;
6
Open een bestand te schrijven met de " fopen " functie door het toevoegen van de volgende code :
FILE
* fp ;
fp = fopen
( " file.rar " , " WB " ) ;
7
ontvangen informatie in de buffer met de functie " recv " door toevoeging van de volgende code :
int num_written = 0 ;
terwijl ( ( nrecv = recv ( sfd , buffer , sizeof buffer , 0 ) ) > 0 ) {
char * pbuf = buffer
;
terwijl ( nrecv > 0 ) {
num_written = fwrite ( pbuf , sizeof ( char ) , nrecv , fp ) ;
pbuf
= num_written + ;
nrecv
- = num_written ;
}
}
De lus zal blijven ontvangen informatie tot een fout , die een negatieve waarde geeft , of totdat het een " TCP FIN " -bericht , waarbij een waarde van 0 heeft ontvangt .
8
Sla het bestand C , compileren en uit te voeren het programma om informatie te ontvangen van de socket -verbinding .