/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Descargar archivo por ftp

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
lugarcia



Registrado: 27 Oct 2004
Mensajes: 1

MensajePublicado: 28/10/2004 10:27 am
Título: Descargar archivo por ftp

Hola, ante todo decir que soy nuevo en este foro, por lo que si mi pregunta ya ha sido contestada, lo siento, pero no la he encontrado.
Una vez dicho esto, alla va mi pregunta:
Necesito hacer un programa para windows (las pruebas las estoy haciendo sobre un programa de consola para windows) que se descargue un archivo situado en un servidor Como no tenia ni idea de como hacerlo, me he leido los mensajes que hay sobre Socket, y me han ayudado a ser capaz de conectarme al servidor, pero no tengo ni idea de como descargar archivos. Hasta ahora tengo el siguiente codigo hecho:
Código:
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#include <string.h>

#define MAX 1000

int sock, numero_bytes, salir, i;
char buffer[MAX], comando[MAX], c[MAX];
char command[MAX];
double largo, total;

void main (void)
{
   struct sockaddr_in estructura;    
   
   WSADATA wsaData;
   WSAStartup(MAKEWORD(1, 1), &wsaData);

   salir = 0;
   i=0;

   sock=socket(AF_INET, SOCK_STREAM, 0);
   estructura.sin_family=AF_INET;
   estructura.sin_port=htons(21);
   estructura.sin_addr.s_addr=inet_addr("82.196.4.12");
   memset(&(estructura.sin_zero), 0, sizeof (estructura.sin_zero));
   
   // Conectarse al servidor
   printf ("Conectando...\n");
   if (connect(sock, (struct sockaddr*)&estructura, sizeof(estructura)) == -1)
   {
      printf("Error en la conexión ...");
      exit(-1);
   }
   if ((numero_bytes=recv(sock, buffer, MAX, 0))== -1)
   {
      printf("Error en recibir ...");
      exit(-1);
   }

   buffer[numero_bytes]='\0';
   printf("%s \n", buffer);

   // Identificarse
   printf ("\nUsuario lugarcia_es\n");
   strcpy (command,"USER usuario\r\n");
   numero_bytes = strlen (command);
   send(sock, command, numero_bytes, 0);
   numero_bytes = recv (sock, buffer, MAX, 0);
   buffer[numero_bytes]='\0';
   printf("%s \n", buffer);

   // Introducir password
   printf ("\nAutorizando...\n");
   strcpy (command,"PASS password\r\n");
   numero_bytes = strlen (command);
   send(sock, command, numero_bytes, 0);
   numero_bytes = recv (sock, buffer, MAX, 0);
   buffer[numero_bytes]='\0';
   printf("%s \n", buffer);

   // Comprobar tamaño archivo
   printf ("\nComprobando tamanio...\n");
   strcpy (command,"SIZE versiones\r\n");
   numero_bytes = strlen (command);
   send(sock, command, numero_bytes, 0);
   numero_bytes = recv (sock, buffer, MAX, 0);
   buffer[numero_bytes]='\0';
   printf("%s \n", buffer);

   // Descargar archivo????
   // No funciona
   printf ("\nDescargar versiones...\n");
   strcpy (command,"RETR versiones\r\n");
   numero_bytes = strlen (command);      
   send(sock, command, numero_bytes, 0);
   numero_bytes = recv (sock, buffer, MAX, 0);
   buffer[numero_bytes]='\0';
   printf ("%s \n", buffer);
   
   // Salir
   strcpy (command, "QUIT\r\n");
   numero_bytes = strlen (command);
   send (sock, command, numero_bytes, 0);
   numero_bytes = recv (sock, buffer, MAX, 0);
   buffer[numero_bytes]='\0';
   printf("%s \n", buffer);

   // Cerrar conexion
   closesocket(sock);
   WSACleanup();
}

Por favor, que alguien me ayude. Gracias.
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com