El lenguaje C implementa la carga de archivos desde FTP

El lenguaje 1.C puede utilizar la función CStdioFile para abrir archivos locales. Utilice la clase CInternetSession para crear e inicializar un archivo de servidor FTP abierto en Internet. CStdioFile hereda de CFile. Un objeto CStdioFile representa un archivo de transmisión en tiempo de ejecución de C abierto con la función de tiempo de ejecución fopen.

Los archivos de streaming se almacenan en un búfer y se pueden abrir en modo texto (predeterminado) o en modo binario. El modo de texto proporciona un manejo especial de pares de avance de línea de retorno duro. Cuando escribe un carácter de nueva línea (0x0A) en un objeto CStdioFile en modo texto, se envía un par de bytes (0x0D, 0x0A) al archivo. Cuando lees un archivo, un par de bytes (0x0D, 0x0A) se traduce en un solo byte (0x0A).

CStdioFile no admite las funciones Duplicar, LockRange y UnlockRange CFile. Si estas funciones se llaman en CStdioFile, se producirá una excepción CNoSupported.

Utilice la clase CInternetSession para crear e inicializar una o más sesiones de Internet simultáneas. Si es necesario, describa también la conexión con el servidor proxy.

Si se debe mantener la conexión a Internet durante el proceso de solicitud, puede crear un miembro CInternetSession de la clase CWinApp. Una vez que se ha establecido la sesión de Internet, se puede llamar a OpenURL. CInternetSession asignará la URL para su análisis llamando a la función global AfxParseURL. Independientemente del tipo de protocolo, CInternetSession interpreta la URL y la gestiona. Maneja solicitudes de archivos locales identificados por el recurso URL "file://". Si el nombre que se le pasa es un archivo local, OpenURL devolverá un puntero al objeto CStdioFile.

Si utiliza OpenURL para abrir una URL en un servidor de Internet, puede leer la información desde aquí. Si desea realizar acciones en un servicio específico (por ejemplo, HTTP, FTP o Gopher) ubicado en un servidor, debe establecer una conexión adecuada con este servidor.

2.include?lt; winsock.hgt;

#include?lt.hgt; >

p>

WSADATA?wsaData;

char?name[255];?//name es el nombre de la máquina local

CString?ip;?// IP local

PHOSTENT?hostinfo;

wVersionRequested?=?MAKEWORD(?1,?1?);

if?(?WSAStartup(?wVersionRequested, ?amp; wsaData?)?==?0?)

{

if(?gethostname?(?nombre,?sizeof(nombre))?==?0)

{

if((hostinfo?=?gethostbyname(nombre))?!=?NULL)

{

ip?= ?inet_ntoa? (*(struct?in_addr?*)*hostinfo-gt;h_addr_list);

}

}

WSACleanup(?);

}

//?AfxMessageBox(name); //nombre es el nombre de la máquina local

//?AfxMessageBox(ip);?//ip es el IP local

CStdioFile?File;

File.Open("C://ip.txt", CFile::modeCreate|CFile::modeReadWrite);

// Si el archivo no existe de antemano, se necesita CFile::modeCreate; de ​​lo contrario, no es necesario.

File.WriteString(ip ":" "8000");

File.Close(); // Tenga en cuenta que el archivo debe cerrarse aquí; de lo contrario, no se podrá cargar. exitoso

p>

CString?host="204.45.67.11";

CString?user="19337";

CString?password=" 1234567";

TRACE(":s:s:s:s/n",?host,?

usuario,?contraseña,?"C://ip.txt ");

CInternetSession?sesión

(AfxGetApp()-gt; m_pszAppName);

CFtpConnection*?pConn?=?NULL;

pConn?=?sesión .GetFtpConnection?(host, usuario, contraseña);

if?(pConn)?{

if?(!pConn-gt;PutFile( "C://ip.txt ", "ip.txt"))

{

MessageBox("Error en la transferencia de archivo");

}? else?{

MessageBox("¡La transferencia del archivo se realizó correctamente!");

}

pConn-gt; eliminar?pConn;

session.Close();

}?else?{

MessageBox("¿No se puede? Conectar");

}