Red de conocimientos turísticos - Conocimientos sobre calendario chino - ¿Qué amigo me puede enviar una rutina para operar FTP en PB? Muchas gracias.

¿Qué amigo me puede enviar una rutina para operar FTP en PB? Muchas gracias.

Puede consultar el siguiente contenido:

Implementación de la transmisión FTP en PB

Al desarrollar con PB, a menudo es necesario utilizar la función ftp. La aplicación típica es generar un archivo txt a partir de los datos en la ventana de datos y luego enviar este archivo de datos al servidor remoto mediante ftp. Dado que pb en sí no proporciona ninguna función ftp, si desea realizar una transmisión ftp en pb, solo puede utilizar recursos distintos de pb. Los siguientes son varios métodos resumidos por el autor en pb development.

1. Usar comandos externos

Este método consiste en ejecutar el comando ftp que viene con Windows en el programa pb. El método específico es generar un archivo .bat en el programa, escribir el comando ftp que se ejecutará en este archivo y luego ejecutar el archivo por lotes. Supongamos que la IP del servidor ftp es 202.114.67.2, el nombre de usuario es usuario y la contraseña es 12345. Ahora necesita cargar el archivo t00001.txt en c:\temp\ local al directorio \txtdata\ del servidor. El código pb es el siguiente:

entero li_bat //Puntero de nombre de archivo

li_bat = FileOpen(path_ftp+'get_file.bat',

lineMode!, Write !, LockWrite!, ¡Reemplazar!)

FileWrite(li_bat, 'cd c:\temp\')

FileWrite(li_bat, 'ftp 202.114.67.2')

FileWrite(li_bat, 'usuario)

FileWrite(li_bat, '12345')

FileWrite(li_bat, 'poner t00001.txt

\txtdata \t00001 .txt')

FileWrite(li_bat, 'adiós')

FileWrite(li_bat, 'exit')

FileClose(li_bat)

Ejecutar(path_ftp+'get_file.BAT',Minimized!)

messagebox("Mensaje rápido", "Informe de datos completado")

La ventaja de este método es que es simple y fácil de implementar. No es necesario llamar a funciones API ni unirse a OLE. La primera desventaja es que si desea ejecutar comandos externos, se abrirá la ventana de DOS, lo que parece poco armonioso. La segunda es que es imposible juzgar si la transmisión de datos fue exitosa o no, y es difícil de controlar durante la programación; .

2. Utilice el control de Transferencia de Internet

El control de Transferencia de Internet es un control muy utilizado en la programación de redes. Admite los dos protocolos más utilizados en Internet, a saber, Http y Ftp. En windows98 viene con el sistema. Para obtener información detallada sobre este control, consulte los libros correspondientes. Aquí solo usamos su función Ftp. Agregue un OLE a este control en PB, asígnele el nombre ole_1 y establezca las propiedades de este control de acuerdo con los siguientes datos (tenga en cuenta que no son las propiedades de ole_1). Utilice los valores predeterminados para las propiedades que no figuran en el archivo. tabla:

Descripción del valor del atributo

El protocolo 2 especifica el protocolo Ftp

Remotehost 202.114.67.2

Nombre de usuario Usuario1

Contraseña 12345

El control de transferencia de Internet admite dos métodos de transmisión de datos, a saber, transmisión síncrona y transmisión asíncrona. El método de transmisión sincrónica bloqueará el programa durante la transmisión de datos, y esta función se implementa llamando al método OpenUrl del control; el método de transmisión asincrónica no bloqueará el programa y se implementa llamando al método Execute del control;

Aunque el método de sincronización es fácil de controlar, solo puede descargar archivos y no cargar archivos, lo que limita su aplicación práctica. Para cargar y descargar datos, solo puede utilizar el método de transmisión asíncrona de este control. Para completar la función en el ejemplo anterior, simplemente agregue la siguiente declaración al programa PB:

Ole_1.object.execute("","put c:

\temp\t00001 . txt \txtdata\t00001.txt")

De manera similar, si desea descargar los archivos del servidor al local, agregue la siguiente instrucción al programa:

Ole_1. object.execute ("","get \txtdata\t00001.txt c:\temp\t00001.txt")

El control de transferencia de Internet es muy poderoso y es suficiente para crear un FTP relativamente completo. Viene con el sistema operativo y no es necesario registrar nuevos controles durante la programación. Sin embargo, según la experiencia del autor, este control también tiene dos deficiencias que no se pueden ignorar. En primer lugar, la carga y descarga de datos se transmite de forma asincrónica. Si ejecuta varios comandos ftp a la vez, está bien. Una vez, algo salió mal. Por ejemplo, si queremos ingresar primero al directorio \file del servidor y luego cargar datos, el programa debería ser el siguiente:

Ole_1.object.execute("","cd \file\")

Ole_1.object.execute("","put

c:\temp\t00001.txt \txtdata\t00001.txt")

Porque la ejecución El método se ejecuta de forma asincrónica, comienza a ejecutar la segunda declaración antes de que se complete la primera. Esto puede hacer que el servidor comience a cargar los datos antes de que tenga tiempo de cambiar el directorio actual a \file, lo que provoca un error.

En segundo lugar, el autor también encontró un problema inexplicable, es decir, al usar este control para cargar, cambiará el nombre del archivo cargado en el servidor a mayúsculas, como en el ejemplo anterior, el local t00001 Después de cargar el txt en el servidor, su nombre será T00001.TXT, lo cual está bien en NT, pero puede causar errores en máquinas Unix.

3. Utilice el control FTP/X de Internet de Mabry

Este control es un control para Ftp proporcionado por Mabry Software. Los lectores pueden descargarlo desde www.mabry.com Control(mftpx.ocx). ). Después de la comparación, el autor cree que usar este control para programar es lo más conveniente para la transmisión ftp. Puede completar la mayoría de las funciones de Ftp y puede controlar fácilmente la ejecución del programa durante la programación. Por ejemplo, para completar las funciones antes mencionadas, primero registramos el control y luego agregamos un Ole del control en el programa PB, llamado Ole_1; un editor de una sola línea Sle_1, que se usa para mostrar información relevante, haga clic en él; para realizar la operación Ftp. Configure otras variables de instancia booleanas, asígnele el nombre is_con y configúrelo en falso para indicar si la red está conectada.

Establezca las propiedades del control de la siguiente manera:

Descripción del valor de propiedad

Host 202.114.67.2

Nombre de inicio de sesión Usuario

Contraseña de inicio de sesión 12345 p>

El tiempo de espera 10 se establece de acuerdo con la situación real

Agregue el siguiente código al evento en el que se hizo clic de Cb_1:

sle_1.text = "Conectando... "

setpointer(¡reloj de arena!)

ole_1.object.connect()

si is_con entonces

sle_1.text = "Iniciar transmisión.. .."

ole_1.object.putfile

("c:\temp\t00001.txt","/txtdata/t00001.txt")

sle_1.text = "¡Transmisión completada!"

finalizar si

setpointer(flecha!)

is_con = false

En Ole_1 Agregue el código correspondiente a cada evento:

evento conectado:

si está conectado entonces

sle_1.text = "¡Conexión exitosa!"

is_con = true

else

sle_1.text = "¡Error de conexión!"

is_con = false

finalizar si

evento de excepción externa:

sle_1.text = "Error externo, es posible que la red no esté disponible"

acción = ¡ExcepciónIgnorar!

evento de progreso:

sle_1.text = "Transferido"

+ cadena(bytestransferidos)+"bytes...."

ter>