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

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Transfiere la mitad del archivo. [winsock]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Transfiere la mitad del archivo. [winsock]  (Leído 677 veces)
darckbaston

Desconectado Desconectado

Mensajes: 2


Ver Perfil
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!.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Virtualvob sin sonido en la mitad
Multimedia
circus2003 1 698 Último mensaje 12 Mayo 2005, 08:36 am
por arda-lothi
video con dos imagenes a la mitad
Multimedia
svartahrid 6 1,256 Último mensaje 18 Enero 2006, 00:38 am
por svartahrid
Enviar archivo Winsock
Programación Visual Basic
gmf_321 1 1,889 Último mensaje 27 Mayo 2006, 22:46 pm
por FaiF (A¥åHøRå)
peli a la mitad
Multimedia
pardo 2 1,541 Último mensaje 3 Abril 2007, 02:50 am
por Songoku
Ayuda!!! Winsock Transfiere a 8Bytes Por Segundo
Programación Visual Basic
Rudy21 0 1,242 Último mensaje 8 Octubre 2009, 10:58 am
por Rudy21
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines