Los rincones del API Win32: WinInet y FTP - Ejecutar comandos genéricos

13 - Ejecutar comandos genéricos

[editar]
Tutorial creado por Juan Manuel. Extraido de: http://www.lawebdejm.com
30 de Noviembre de 1999
Si dentro de todas estas funciones no encuentras la que necesitas, “no problemo”, que todavía hay más. Puedes utilizar la función FtpCommand para ejecutar cualquier tipo de comando admitido por el servidor FTP. Eso sí, esta función sólo está disponible si tienes instalado Internet Explorer 5.0 o superior. BOOL FtpCommand( HINTERNET hConexión, BOOL fHayRespuesta, DWORD dwOpciones, LPCTSTR lpszComando, DWORD dwContexto, HINTERNET* phRespuesta );

  • hConexión: un descriptor de conexión obtenido a través de InternetConnect.
  • fHayRespuesta: un valor booleano que indica si el comando retorna algo. En caso de pasarse el valor TRUE, se copiará en phRespuesta el descriptor de la petición creada.
  • dwOpciones:
    • FTP_TRANSFER_TYPE_ASCII: utiliza el tipo de transferencia ASCII propia de los servidores FTP. Realiza las conversiones de la tabla ASCII correspondiente.
    • FTP_TRANSFER_TYPE_BINARY: utiliza el tipo de transferencia binaria propia de los servidores FTP. El contenido del archivo no se cambia.
  • lpszComando: una cadena con el comando a ejecutar. Puedes consultar una lista con algunos de los comandos en la tabla que puedes encontrar al principio del artículo.
  • dwContexto: el valor de contexto que queramos pasar al llamar a la función de callback.
  • phRespuesta: se trata de un puntero a un descriptor donde se copiará el descriptor obtenido de crear la petición. Este descriptor se utiliza para leer la respuesta con la función InternetReadFile. Hay que recordar que este descriptor, como cualquier otro, debe ser cerrado con InternetCloseHandle una vez que ya no lo necesitemos.

La función retorna TRUE o FALSE dependiendo de su éxito. Como sabemos, un comando FTP retorna un código de respuesta, que podemos obtener a través de InternetGetLastResponseInfo, y si además retorna un resultado (como un archivo, un texto, etc.) podemos leer del canal de datos a través de InternetReadFile, utilizando el descriptor obtenido en phRespuesta.

Para utilizar esta función es necesario conocer bien los comandos FTP, saber cómo se llaman y qué retornan, así que podemos decir que se trata de una función para avanzados.

De todas formas, como introducción y para que veáis cómo se utiliza, podéis echar un vistazo al siguiente código, donde se hace un uso muy sencillo de FtpCommand para obtener el listado de archivos en un directorio, a través del comando NLST:

{ HINTERNET respuesta; DWORD leido; DWORD disponible; char *buffer; if ( FtpCommand(<<descriptor de conexión>>, TRUE, FTP_TRANSFER_TYPE_ASCII, "NLST", 0, &respuesta) ) { try { InternetQueryDataAvailable(respuesta, &disponible, , ); buffer = new char[disponible + 1]; try { InternetReadFile(hURL, buffer, disponible, &leido); MessageBox(GetActiveWindow(), buffer, "Comando NLST", MB_ICONINFORMATION); } finally { delete buffer; } } finally { InternetCloseHandle(respuesta); } } }
[editar]

9 opiniones

Excelente aporte.

Es un tutorial muy bueno, y facil de entender.
Corrección.

En el punto 3. Del "modo pasivo" hay un error: 3. Para ciertas operaciones, es necesario realizar el envío de un fichero, por lo que se crea el canal de datos. Para ello el cliente crea una conexión física desde uno de sus puerto (puerto y) hasta un número de puerto del *cliente*. Este número de puerto fue el que indicó el servidor como respuesta del comando pasv (puerto z). De este modo, el cliente establece el canal de datos por el que se transmite la información. Donde dice *cliente* debería decir *servidor*.
EZE
Muy bueno.

Este curso es muy bueno. Me enseño todo lo que necesitaba. Muy buen explicado. Impresionante.
Buen resultado de http.

Bueno es muy bueno sus definiciones sobre el tema tratado bueno chau.
max
Tremendo.

Muy bueno.
1 2 | siguiente >

Tutoriales relacionados con 'Los rincones del API Win32: WinInet y FTP'

El protocolo FTP desde el API WinInet. Con este curso aprenderás a hacer un pequeño... Más »
Comienzo con un nuevo tema dentro dentro de la serie Los rincones del API Win32.... Más »
Entramos en temas interesantes: el acceso a recursos remotos a través del protocolo de aplicación... Más »
En el anterior curso dejamos muchos temas en el tintero, así que voy a terminar... Más »
Damos una visión detallada de una de las características más interesantes de esta tecnología de... Más »

Autor y licencia de 'Los rincones del API Win32: WinInet y FTP'


Tutorial de Juan Manuel. Extraido de: http://www.lawebdejm.com CopyLeft
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.