“Conocimientos Programación>C /C + + Programming

Cómo purgar un Reciba Socket búfer en C

2015/10/7
Al recibir los datos de un socket en un búfer , es importante detectar cuando el socket se cierra de modo que usted no tiene que esperar para los paquetes adicionales por tiempo indefinido. La API de Windows Sockets ( Winsock ) proporciona una interfaz para el programa C para interactuar con la pila de protocolos TCP /IP subyacente. Recopilar la información del servidor, crear un socket, conéctelo a la acogida y recepción de datos con la función " recv " en un búfer hasta que reciba un mensaje de "TCP FIN " error o . Instrucciones
1

Abra el archivo C en un editor como Microsoft Visual Studio Express.
2

Incluir las cabeceras necesarias para trabajar con sockets y archivos agregando el siguiente código en la parte superior de su archivo :

# include

# include

# include
Página 3

Recupera la información de host con la función " getaddrinfo " agregando el siguiente código en su función :

struct consejos addrinfo , * res ;

int sfd ;

char buffer [512 ] ;

int nrecv ;

memset (& 0 , consejos , sugerencias sizeof ) ;

hints.ai_socktype = SOCK_STREAM ;

hints.ai_family = AF_UNSPEC ;

getaddrinfo ( " www.server.com " , "3500 " , y consejos , y res) ;

Reemplace la dirección del host de " www.server.com " y el puerto de "3500 " con la información para el servidor que se está conectando . El valor " SOCK_STREAM " indica que el socket utilizará TCP , que es una conexión bidireccional fiable
4

Crear un socket con la información del host añadiendo el siguiente código: .

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

Conecte la toma con la función "connect ", utilizando el descriptor de archivo de la " función socket " , añadiendo el siguiente código:

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

Abrir un archivo para escribir con la función " fopen " agregando el siguiente código:

FILE * fp ;

fp = fopen ( " file.rar ", " wb ");
7 < p> Recibir información en el búfer con la función " recv " agregando el siguiente código:

num_written int = 0 ;

while (( nrecv = recv ( SFD , tampón , tampón sizeof , 0 ) ) > 0 ) {

char * pBuf = búfer ;

while ( nrecv > 0 ) {

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

pBuf + = num_written ;

nrecv - = num_written ;

}

}

El bucle continuará recibiendo información hasta que un error , que devuelve un valor negativo, o hasta que se recibe un mensaje de " TCP FIN" , que tiene un valor de 0 .
8

Guarde el archivo C, compilar y ejecutar el programa para recibir información de la conexión de socket .

C /C + + Programming
Cómo utilizar la función strpbrk en C + +
Cómo crear un nuevo archivo DAT en Matlab
Funciones Iomanip
Cómo hacer una carpeta en C + +
Cómo crear un CAB en Windows Mobile
Cómo utilizar ActiveX en C #
¿Qué es una Interfaz CPP
Cómo calcular Sin With Power Series en C + +
Conocimientos Informáticos © http://www.ordenador.online