elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Tutorial básico de Quickjs


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / Transfiere la mitad del archivo. [winsock] en: 1 Julio 2011, 01:42 am
Hola, los otros dias se me dio al curiosidad de aprender sockets y aca esto. Mi problema es que cuando envio un archivo (en este caso una imagen png) me envia la mitad y entonces no se puede abrir la imagen en el formato que le corresponde.

Este es el codigo del cliente donde envio el archivo (no paso la conexión y eso por que sino se hace un poco largo):

Código:
void FileSend( SOCKET sock, const char *dir )
{
int fSize = 0;
char szSize[30];
char szSend[3500];

FILE *file = fopen( "C:\\Lari\\Programacion\\Sockets\\fondo.png", "rb" );

fSize = GetFileSize( file );
printf(" Tamaño del archivo a enviar: %d\n\n", fSize );
sprintf( szSize, "%d", fSize );
send( sock, szSize, strlen(szSize), 0);

while( !feof( file ) )
{
fgets( szSend, 3500, file );
send( sock, szSend, 3500, 0 );

printf( "\tCopiando archivo....\n" );
};

fclose( file );
printf( "\n\nArchivo enviado correctamente....\n" );
}

Este es el del servidor que recive la informacion:
Código:
void FileRecive( SOCKET sock, int len )
{
char szSize[30];
char *szBuffer;
int iSize = 0;
int iRecv = 1;

FILE *file = fopen( "C:\\Lari\\Programacion\\Sockets\\fondo2.png", "wb+" );

printf( "Escribiendo archivo....\n" );

while( iSize == 0 )
{
iRecv = recv( sock, szSize, 30, 0 );

if( strlen(szSize) > 3 )
iSize = atoi( szSize );
}

printf( "Tamaño: %d", iSize );
szBuffer = new char[iSize];

do
{
if( iRecv == SOCKET_ERROR )
break;

iRecv = recv( sock, szBuffer, iSize, 0 );

fputs( szBuffer, file );

} while( iRecv != 0 );

printf( "\n\nArchivo recivido correctamente!!.\n" );

//printf( "\n\n\n ...................... \n\"%s\"\n", szRecv );
fclose( file );
}

Bueno si alguien puede saber porque se lo agradeceria mucho!

Si cometi algun error en la publicacion de este thread avisenmen porque es mi primer thread en este foro, gracias!.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines