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


 


Tema destacado: Deseas probar algunas mejoras a la interfaz del foro? Prueba cake! acerca de


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, YreX-DwX)
| | |-+  me podrian ayudar con este codigo para descrgar archivos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: me podrian ayudar con este codigo para descrgar archivos  (Leído 570 veces)
Belial & Grimoire


Desconectado Desconectado

Mensajes: 559


Tea_Madhatter


Ver Perfil
me podrian ayudar con este codigo para descrgar archivos
« en: 20 Junio 2012, 02:36 »

hola

estoy tratando de programar una aplicacion para descargar archivos, del codigo que les pondre, el segundo for( ; ; ), se detiene y no termina de descargar los datos y los archivos quedan incompletos, que podria suceder?, lo estoy haciendo en linux

Código
  1. if(argc > 2){
  2.  
  3. char *hst, *file, *dire;
  4. char datos[512];
  5. char buffer[1024];
  6. hst = argv[1];
  7. file = argv[2];
  8. dire = argv[3];
  9.  
  10. int sock;
  11. int i = 0;
  12. int bytes = 0;
  13. int dbytes;
  14.  
  15. memset(buffer, 0, 1024);
  16.  
  17. struct sockaddr_in cox;
  18. struct hostent *ht;
  19.  
  20. sprintf(datos, "GET %s HTTP/1.1\nHost: %s\nUser-Agent: Mozilla/4.0\n\n", file, hst);
  21.  
  22. sock = socket(AF_INET, SOCK_STREAM, 0);
  23.  
  24. ht = gethostbyname(hst);
  25.  
  26. cox.sin_family = AF_INET;
  27. cox.sin_port = htons(80);
  28. cox.sin_addr = *((struct in_addr*)ht->h_addr);
  29. memset(&cox.sin_zero, 0, 8);
  30.  
  31. connect(sock, (struct sockaddr*)&cox, sizeof(struct sockaddr));
  32.  
  33. FILE *fp = fopen(dire, "wb");
  34.  
  35. send(sock, datos, strlen(datos), 0);
  36.  
  37. for(;;){
  38.  
  39. recv(sock, buffer + i, 1, 0);
  40. i++;
  41. if(strncmp(buffer+i-4, "\r\n\r\n", 4) == 0){
  42. break;
  43. }
  44. }
  45. for(;;){
  46.  
  47. memset(buffer,0,1024);
  48. bytes = recv(sock, buffer, 1024, 0);
  49. dbytes += bytes;
  50. printf("%d KB\n", dbytes/1024);
  51. fwrite(buffer, sizeof(char), bytes ,fp);
  52. if(bytes <= 0){
  53. break;
  54. }
  55. }
  56. printf("Bytes: %d\n", dbytes);
  57. fclose(fp);
  58. close(sock);
  59. }
  60. }
  61.  

todavia le faltan cosas, pero ahorita lo hice para que descargue de esta manera
Citar
./downfiles www.oocities.org /dreamlfpg315/dll/ensamblador.txt ensamblador.txt





En línea

.                                 
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines