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

Come eliminare un buffer di ricezione Socket in C

Quando si ricevono i dati da una presa di corrente in un buffer , è importante rilevare quando il socket si chiude in modo che non si attende per i pacchetti aggiuntivi a tempo indeterminato. L' API di Windows Sockets ( Winsock ) fornisce un'interfaccia per il programma C per interagire con lo stack del protocollo TCP /IP di base. Raccogliere le informazioni del server host , creare un socket , collegarlo al host e quindi ricevere dati con la funzione " recv " in un buffer fino a quando si riceve un messaggio di errore o " TCP FIN " . Istruzioni
1

Aprire il file C in un editor come Microsoft Visual Studio Express .
2

Includere le intestazioni necessarie per lavorare con i socket e file aggiungendo il seguente codice nella parte superiore del file :

# include

# include

# include

3

recuperare le informazioni host con la funzione " getaddrinfo " aggiungendo il seguente codice nella funzione :

struct sentori addrinfo , * res ;

int sfd ;

char buffer [ 512 ] ;

int nrecv ;

memset (& suggerimenti, 0 , accenni sizeof ) ;

hints.ai_socktype = SOCK_STREAM ;

hints.ai_family = AF_UNSPEC ;

getaddrinfo ( " www.server.com " , " 3500 " , e suggerimenti, e res ) ;

sostituire l'indirizzo dell'host di " www.server.com " e il porto di "3500 " con le informazioni per il server di cui si è connessi . Il valore " SOCK_STREAM " indica la presa utilizzerà TCP , che è un collegamento bidirezionale affidabile
4

creare un socket con le informazioni dell'host con l'aggiunta del seguente codice : .

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

Collegare la presa con la funzione di "collegamento", utilizzando il descrittore di file dal " funzione di presa " , con l'aggiunta del seguente codice :

connect ( SFD , res - > ai_addr , res - > ai_addrlen ) ;
6

Apri un file di scrittura con la funzione " fopen " aggiungendo il seguente codice :

FILE * fp ;

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

Ricevere le informazioni nel buffer con la funzione " recv " aggiungendo il seguente codice:

num_written int = 0;

while ( ( nrecv = recv ( SFD , di buffer , sizeof tampone , 0 ) ) > 0 ) {

char * pBuf = tampone ;

mentre ( nrecv > 0 ) {

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

pBuf + = num_written ;

nrecv - = num_written ;


}

}

Il loop continueranno a ricevere informazioni fino a quando un errore , che restituisce un valore negativo , o fino a quando non riceve un messaggio di " TCP FIN " , che ha un valore di 0 .
8

Salvare il file C , compilare ed eseguire il programma per ricevere informazioni dalla connessione socket .

 

Programmazione © www.354353.com