La Web del Programador: Comunidad de Programadores
 
    Pregunta:  26220 - ENVIO DE ARCHIVOS A UN COMPUTADOR REMOTO POR FTP
Autor:  Randall Leiton
Hola como esta, les saludo desde Costa Rica, buscando información sobre el uso del ftp en c++ , di con su pagina, me parece muy ilustrante y con bastante información, la duda que me llevo a visitar su pagina es la siguiente y estaria muy agradecido si me pudieran ayudar.

Tengo 2 servidores con sistema operativo Linux y desde un servidor local sse deben enviar archivos de diferente tipo hacia el servidor remoto, con la instrucción \"POPEN\" accedo a la siguiente linea de comando \" ftp ftp://usuario:password@host/archivo \" con el cual puedo abrir un pipe para obtener un archivo desde el servidor remoto al servidor local o sea un GET, lo que yo necesito es la sintaxis para lograr que la funcion me haga un PUT y con eso pueda enviar los archivos desde el servidor local hacia el remoto , les agradeceria si me pudiran informar si existe alguna funcion que me pueda ser util.

  Respuesta:  Luis Alberto Cedeño Flores
Paisano como me le va con la transmisión vía FTP, espero que sea etapa superada, pero si no es así pongale atención a las siguientes lineas de código, las cuales las implemente desde Visual C++6.0 para Windows CE ya que debia de transmitir archivos de texto via modem.

RASDIALPARAMS rdp;
HRASCONN hRas;

hRas = NULL;

HINTERNET hInternet;
HINTERNET hFTP;

memset(&rdp,0,sizeof(rdp));
rdp.dwSize = sizeof(rdp);
rdp.szPhoneNumber[0] = TEXT('\0');
rdp.szCallbackNumber[0] = TEXT('\0');
wcscpy(rdp.szEntryName,_T("****"));
wcscpy(rdp.szDomain,_T("*"));

m_strMensaje = _T("Estableciendo conexión con servidor...");
UpdateData(FALSE);

if(RasDial(NULL,NULL,&rdp,NULL,NULL,&hRas) != 0)
{
m_strMensaje = __T("Imposible comunicacion con servidor...");
UpdateData(FALSE);
MessageBox(_T("No se ha podido establecer conexión con el Servidor"),_T("Error"),MB_ICONSTOP);
//Desconectamos la línea.
RasHangUp(hRas);
return;
}

hInternet = InternetOpen(_T("CEFA"),INTERNET_OPEN_TYPE_DIRECT ,NULL,NULL,0);
if(hInternet==NULL)
{
m_strMensaje = __T("Imposible establecer conexción con Internet...");
UpdateData(FALSE);
MessageBox(_T("No se ha podido hacer conexión de Internet"),_T("Error"),MB_ICONSTOP);
return;
}

hFTP = InternetConnect(hInternet,_T("NUMERO IP"),INTERNET_DEFAULT_FTP_PORT, _T("USUARIO"), _T("PASSSWORD"),INTERNET_SERVICE_FTP,0,0);

m_strMensaje = _T("Estableciendo comunicación FTP...");
UpdateData(FALSE);

if(hFTP==NULL)
{
m_strMensaje = _T("Fallo establecimiento de comunicación...");
UpdateData(FALSE);
MessageBox(_T("No se ha podido establecer conexión vía FTP"),_T("Error"),MB_ICONSTOP);
InternetCloseHandle(hInternet);
//Desconectamos la línea.
RasHangUp(hRas);
return;
}

if(!FtpPutFile(hFTP,_T("Ruta local"),_T("Ruta remota"),INTERNET_FLAG_TRANSFER_BINARY ,0))
{
m_strMensaje = _T("Transferencia fallida...");
UpdateData(FALSE);
InternetCloseHandle(hFTP);
InternetCloseHandle(hInternet);
//Desconectamos la línea.
RasHangUp(hRas);
return;
}

InternetCloseHandle(hFTP);
InternetCloseHandle(hInternet);

//Desconectamos la línea.
RasHangUp(hRas);