# include 
 
 3 
 Recuperar as informações do host com a função " getaddrinfo " , adicionando o seguinte código na sua função: 
 
 struct addrinfo dicas , * res ; 
 
 int sfd ; 
 
 de char buffer [ 512] ; 
 
 int nrecv ; 
 
 memset (& sugestões, 0 , sugestões sizeof ); 
 
 hints.ai_socktype = SOCK_STREAM ; 
 
 hints.ai_family = AF_UNSPEC ; 
 
 getaddrinfo ( " www.server.com ", " 3500 " , e sugestões , & res ) ; 
 
 Substitua o endereço do host de " www.server.com " e do porto de " 3500 ", com as informações para o servidor que você está se conectando. O valor " SOCK_STREAM " indica o soquete vai usar TCP , que é uma conexão bidirecional confiável 
 4 
 Criar um soquete com as informações do host , adicionando o seguinte código: . 
 
 sfd = socket (res -> ai_family , res -> ai_socktype , res -> ai_protocol ); 
 5 
 Ligue a tomada com a função "connect" , usando o descritor de arquivo a partir do " função socket " , adicionando o seguinte código: 
 
 conectar ( sfd , res -> ai_addr , res -> ai_addrlen ); 
 6 
 Abra um arquivo para gravar a com a função " fopen " , adicionando o seguinte código: 
 
 FILE * fp ; 
 
 fp = fopen ( " file.rar ", " wb "); 
 7 
 Receba informações no buffer com a função de " recv " , adicionando o seguinte código: 
 
 int num_written = 0; 
 
 while (( nrecv = recv ( sfd , buffer, sizeof tampão , 0)) > 0) { 
 
 char * pBuf = buffer; 
 
 while ( nrecv > 0) { 
 
 num_written = fwrite ( pBuf , sizeof (char ) , nrecv , fp ); 
 
 pBuf + = num_written ; 
 
 nrecv - = num_written ; 
 
 } 
 
 } 
 
 O loop continuará recebendo informações até que um erro , que retorna um valor negativo, ou até que ele recebe uma mensagem "TCP FIN " , que tem um valor de 0. 
 8 
 Salve o arquivo C, compilar e executar o programa para receber informações da conexão de soquete .