Cómo transferir archivos desde un Pocket PC a un servidor FTP

Exención de responsabilidades de contenido KB retirado

Este artículo se refiere a productos para los que Microsoft ya no ofrece soporte técnico. Por tanto, el presente artículo se ofrece "tal cual" y no será actualizado.

Resumen

En este artículo se ilustra cómo utilizar eMbedded Visual Basic 3.0 mediante programación transferir archivos desde un dispositivo Pocket PC a un servidor de protocolo de transferencia de archivos (FTP) de Microsoft Internet Information Server (IIS) en Internet.

Más información

Para realizar a esta transferencia, puede utilizar la aplicación interfaz de programación (API) llama a Wininet.dll. Sin embargo, antes de llamar a estas API, debe asegurarse de que se cumplen las condiciones siguientes:

  • El Pocket PC debe estar conectado a la red.
  • Debe ejecutar el servidor FTP de IIS en el escritorio. Para comprobar esto, vaya al sitio FTP (por ejemplo, ftp: / / <nombreDeMiServidor>) en Pocket Internet Explorer en el dispositivo.
  • El servidor FTP de IIS debe permitir conexiones anónimas.
  • El servidor FTP de IIS debe permitir el acceso de lectura y escritura en el directorio FTP.
Para configurar Windows 2000 para que permita conexiones anónimas y lectura y acceso de escritura al directorio FTP, siga estos pasos:

  1. Desde el menú Inicio , seleccione programas, seleccione Herramientas administrativasy, a continuación, haga clic en Administrador de servicios Internet para abrir el Administrador de servicios Internet.
  2. Haga clic para expandir el nombre del servidor. (Ratón) en el sitio FTP predeterminado y, a continuación, haga clic en Propiedades.
  3. En el cuadro de diálogo Propiedades , en la ficha Cuentas de seguridad , asegúrese de que está activada la casilla de verificación Permitir conexiones anónimas .
  4. En la ficha Directorio principal , asegúrese de que tanto la lectura y escritura casillas de verificación están seleccionadas para el Directorio del sitio FTP.
Después de configurar el servidor FTP de IIS anteriores, siga estos pasos para crear la aplicación incrustada de Visual Basic (eVB).

Ejemplo paso a paso

  1. Cree una nueva aplicación de Pocket PC de eVB. Se creará Form1 de forma predeterminada.
  2. Agregue tres etiquetas, tres cuadros de texto, una casilla de verificación y un botón de comando a Form1. No se preocupe por la colocación de los controles.
  3. Pegue el código siguiente en Form1:
    Option Explicit
    Private Sub Command1_click()

    On Error Resume Next
    Dim blnBin As Boolean
    blnBin = False
    If Check1.Value = 1 Then blnBin = True

    If InitializeFTP Then
    MsgBox "FTP initialized"
    If ConnectToFTPServer(Text1.Text, "", "") Then
    MsgBox "Connected to server"
    PutFileOnFTPServer Text2.Text, _
    Text3.Text, blnBin
    MsgBox "File transferred"
    End If
    CloseFTP
    MsgBox "Connection closed"
    End If

    If Err.Number <> 0 Then MsgBox "Error in Command1_Click: " & _
    Err.Number & " - " & Err.Description

    End Sub

    Private Sub Form_OKClick()
    App.End
    End Sub

    Private Sub Form_Load()
    Label1.Move 120, 120, 1575, 255
    Label2.Move 120, 720, 1575, 255
    Label3.Move 120, 1320, 1575, 255
    Text1.Move 240, 360, 2895, 255
    Text2.Move 240, 960, 2895, 255
    Text3.Move 240, 1560, 2895, 255
    Command1.Move 120, 1960, 3135, 495
    Check1.Move 1560, 3120, 2775, 255
    Text1.Text = ""
    Text2.Text = ""
    Text3.Text = ""
    Label1.Caption = "FTP Server"
    Label2.Caption = "File on Device"
    Label3.Caption = "File on FTP Server"
    Check1.Caption = "Binary Transfer"
    Command1.Caption = "Transfer To Server"
    End Sub

  4. Agregue un módulo al proyecto y pegue el código siguiente al nuevo módulo:
    Option Explicit
    Public Const INTERNET_OPEN_TYPE_PRECONFIG = 0
    Public Const INTERNET_OPEN_TYPE_DIRECT = 1
    Public Const INTERNET_OPEN_TYPE_PROXY = 3
    Public Const INTERNET_FLAG_RELOAD = &H80000000

    Public Const FTP_TRANSFER_TYPE_UNKNOWN As Long = 0
    Public Const FTP_TRANSFER_TYPE_ASCII As Long = 1
    Public Const FTP_TRANSFER_TYPE_BINARY As Long = 2

    Public Const INTERNET_DEFAULT_FTP_PORT As Long = 21
    Public Const INTERNET_FLAG_PASSIVE As Long = &H8000000
    Public Const INTERNET_SERVICE_FTP As Long = 1

    Declare Function FtpPutFile Lib "wininet" Alias "FtpPutFileW" ( _
    ByVal hFtp As Long, _
    ByVal lpszLocalFile As String, _
    ByVal lpszNewRemoteFile As String, _
    ByVal dwFlags As Long, _
    ByVal dwContext As Long) As Long

    Declare Function InternetCloseHandle Lib "wininet" ( _
    ByVal hInet As Long) As Long

    Declare Function InternetConnect Lib "wininet" Alias "InternetConnectW" ( _
    ByVal hInet As Long, _
    ByVal lpszServerName As String, _
    ByVal nServerPort As Long, _
    ByVal lpszUsername As String, _
    ByVal lpszPassword As String, _
    ByVal dwService As Long, _
    ByVal dwFlags As Long, _
    ByVal dwContext As Long) As Long

    Declare Function InternetOpen Lib "wininet" Alias "InternetOpenW" ( _
    ByVal lpszAgent As String, _
    ByVal dwAccessType As Long, _
    ByVal lpszProxyName As String, _
    ByVal lpszProxyBypass As String, _
    ByVal dwFlags As Long) As Long

    Declare Function GetLastError Lib "coredll" () As Long

    Public lngInternetHandle As Long
    Public lngFtpHandle As Long
    Public hOpenUrl As Long

    Public Function InitializeFTP() As Boolean

    On Error Resume Next
    Dim sUrl As String

    lngInternetHandle = InternetOpen("eVB OpenUrl", _
    INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
    If Err.Number <> 0 Or lngInternetHandle = 0 Then
    MsgBox "Failed to initialize communications to transfer data" & _
    vbCrLf & Err.Description
    InitializeFTP = False
    Else
    InitializeFTP = True
    End If

    End Function

    Public Function ConnectToFTPServer(ByVal strFTPServerName As String, _
    ByVal strUsername As String, ByVal strPassword As String) As Boolean

    On Error Resume Next

    lngFtpHandle = InternetConnect(lngInternetHandle, strFTPServerName, _
    INTERNET_DEFAULT_FTP_PORT, strUsername, strPassword, _
    INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0)

    If lngFtpHandle = 0 Or Err.Number <> 0 Then
    MsgBox "Failed to connect to server to transfer data. Error: " & _
    CStr(GetLastError)
    ConnectToFTPServer = False
    Else
    ConnectToFTPServer = True
    End If

    End Function

    Public Function PutFileOnFTPServer(ByVal strSourceFilename As String, _
    ByVal strDestFilename As String, _
    ByVal blnBinaryFile As String) As Boolean

    On Error Resume Next

    Dim blnTransferredOK As Boolean
    Dim lngTransferType As Long

    If blnBinaryFile Then
    lngTransferType = FTP_TRANSFER_TYPE_BINARY
    Else
    lngTransferType = FTP_TRANSFER_TYPE_ASCII
    End If

    blnTransferredOK = FtpPutFile(lngFtpHandle, strSourceFilename, _
    strDestFilename, lngTransferType, 0)

    If blnTransferredOK = 0 Then
    MsgBox "Transfer of file " & strSourceFilename & _
    " to server failed. Error: " & CStr(GetLastError())
    Else
    MsgBox "Transfer of file" & strSourceFilename & " succeeded!"
    End If
    PutFileOnFTPServer = blnTransferredOK

    End Function

    Public Sub CloseFTP()

    On Error Resume Next

    InternetCloseHandle lngFtpHandle
    InternetCloseHandle lngInternetHandle

    End Sub

  5. Ejecute el proyecto en el dispositivo Pocket PC.
  6. En el cuadro de texto Servidor FTP , escriba el nombre del servidor.

    Nota: no escriba una dirección URL como ftp: / / <nombreDeMiServidor>. Recibirá el error 12007 porque no se puede resolver el nombre del servidor. En su lugar, sólo debe escribir el nombre del servidor (por ejemplo, myftpserver).
  7. En el cuadro de texto del archivo en el dispositivo , escriba el nombre del archivo en el dispositivo que debe transferirse al servidor FTP de IIS. Por ejemplo, escriba \My Documents\test.txt.
  8. En el cuadro de texto del archivo en el servidor FTP , escriba el nombre del archivo de destino en el servidor.
  9. Haga clic en el botón de comando. Observe que aparecen varios cuadros de mensajes, que indican que el archivo se ha transferido correctamente.
  10. Vaya al directorio FTP del servidor FTP de IIS y compruebe que el archivo existe.

Referencias

Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

Error de 312039 : mensaje de Error cuando se llama a funciones de FtpPutFile y FtpGetFile: 0x00000057 - ERROR_INVALID_PARAMETER
Propiedades

Id. de artículo: 305598 - Última revisión: 22 ene. 2017 - Revisión: 1

Comentarios