none
Subir ficheros via GPRS RRS feed

  • Pregunta

  • Hola,

    Tengo una aplicación en c# en la que puedo subir ficheros con el protocolo FTP, desde el pda al servidor.
    Mi problema es que solo puedo utilizar el FTP cuando estoy conectado a traves del WIFI, pero si estoy conectado por GPRS , no me deja utilizar ese metodo.
    ¿Alguien me podría orientar sobre como hacer esto?
    (Estaba pensando en utilizar el protocolo http pero no se como hacerlo, ni si es el modo correcto.)
    Os agradecería mucho si me pudierais ayudar, o por lo menos darme una pista.

    Gracias.
    jueves, 18 de marzo de 2010 9:20

Respuestas

  • Hola,

    Al final he solucionado el problema!

    En la empresa me dijeron que la operadora telefónica no nos dejaba utilizar FTP a través de GPRS,, pero esto no era cierto,, estaban equivocados.

    Después de hacer varias pruebas, logré utilizar un cliente FTP en el PDA (utilizando GPRS, claro...).

    Por lo cual, deducí que estaba programando mál el programa para subir ficheros.

    Para el que tenga que utilizar FTP, voy a escribir el código final (el que funciona!):

    //#Si queremos encender el GPRS por código, tenemos que encenderlo antes de llamarle a la siguiente función, y asegurarnos de que que está encendido antes de hacer la llamada.#

    public Boolean UploadFile(string myLocalFile, string myUploadUrl, string nombre)
            {
                try
                {
                    String psw = "aquí estaría el password";
                    String url = "aquí estaría el url";

                    localFile = myLocalFile;
                    uploadURL = myUploadUrl;
                    nombreFichero = nombre;

                    //Conectarse
                    m_ftp = new FTP(url);
                    m_ftp.Connected += new FTPConnectedHandler(m_ftp_Connected);

                    m_ftp.BeginConnect(psw, psw);

                    return true;
                }
                catch (Exception e)
                {
                    return false;
                }          
            }

    //Subir el fichero una vez que ya estemos conectados (esto se ejecutará automáticamente)
    private void m_ftp_Connected(FTP source)
            {
                try
                {
                    try
                    {

                        //Intentamos posicionarnos en la carpeta:
                        m_ftp.ChangeDirectory(uploadURL);
                    }
                    catch (Exception e) //Si no existe la carpeta, dará un error.
                    {

                        //Creamos la carpeta, y nos posicionamos:
                        m_ftp.CreateDirectory(uploadURL);
                        m_ftp.ChangeDirectory(uploadURL);
                    }
                    FileStream stream = File.OpenRead(localFile);
                    try
                    {
                        m_ftp.SendFile(stream, nombreFichero);
                    }
                    catch { }
                    stream.Close();
                    m_ftp.Disconnect();
                    //#Si queremos apagar el GPRS por código, tenemos que apagarlo aquí!#
                }
                catch (Exception e)
                {}
            }

     

    Gracias por todo!

    Saludos,

    gunova .

    • Marcado como respuesta gunova viernes, 23 de abril de 2010 15:17
    viernes, 23 de abril de 2010 15:17

Todas las respuestas

  • Hola

    La configuracion del servidor es por IP? Yo recuerdo que a traves de sockets pude enviar a un ftp conociendo la IP del servidor ftp.

    Saludos,



    Roberto Alvarado Taborda www.bogotadotnet.org Core Group BogotaDotNET Compact Framework Developer .NET Bogota - Colombia
    jueves, 18 de marzo de 2010 14:50
  • Hola,

    Cual es la razón por la que no te deja subir archivos a un FTP via GPRS??

    Saludos,

     


    José Miguel Torres
    miércoles, 24 de marzo de 2010 21:11
    Moderador
  • Hola,

    Antes de nada, os pido disculpas por no haber respondido antes a vuestros comentarios.

    El problema era (y sigue siendo...), que la operadora telefónica no me deja utilizar FTP a través de GPRS.

    Por eso estoy buscando una alternativa a FTP para la subida de ficheros via GPRS.

    ¿Teneis alguna idea?

    Gracias!!

    martes, 13 de abril de 2010 9:50
  • Hola,

    Una opcion es programar un servidor y un cliente sockets, envias por ellos el archivo en bits, en un lado lo partes y en el otro lo unes, envias paquetes pequeños para tener un mejor control del tema.

     

    Saludos,

     


    Roberto Alvarado Taborda www.bogotadotnet.org Core Group BogotaDotNET Compact Framework Developer .NET Bogota - Colombia
    martes, 13 de abril de 2010 12:59
  • Hola,

    Al final he solucionado el problema!

    En la empresa me dijeron que la operadora telefónica no nos dejaba utilizar FTP a través de GPRS,, pero esto no era cierto,, estaban equivocados.

    Después de hacer varias pruebas, logré utilizar un cliente FTP en el PDA (utilizando GPRS, claro...).

    Por lo cual, deducí que estaba programando mál el programa para subir ficheros.

    Para el que tenga que utilizar FTP, voy a escribir el código final (el que funciona!):

    //#Si queremos encender el GPRS por código, tenemos que encenderlo antes de llamarle a la siguiente función, y asegurarnos de que que está encendido antes de hacer la llamada.#

    public Boolean UploadFile(string myLocalFile, string myUploadUrl, string nombre)
            {
                try
                {
                    String psw = "aquí estaría el password";
                    String url = "aquí estaría el url";

                    localFile = myLocalFile;
                    uploadURL = myUploadUrl;
                    nombreFichero = nombre;

                    //Conectarse
                    m_ftp = new FTP(url);
                    m_ftp.Connected += new FTPConnectedHandler(m_ftp_Connected);

                    m_ftp.BeginConnect(psw, psw);

                    return true;
                }
                catch (Exception e)
                {
                    return false;
                }          
            }

    //Subir el fichero una vez que ya estemos conectados (esto se ejecutará automáticamente)
    private void m_ftp_Connected(FTP source)
            {
                try
                {
                    try
                    {

                        //Intentamos posicionarnos en la carpeta:
                        m_ftp.ChangeDirectory(uploadURL);
                    }
                    catch (Exception e) //Si no existe la carpeta, dará un error.
                    {

                        //Creamos la carpeta, y nos posicionamos:
                        m_ftp.CreateDirectory(uploadURL);
                        m_ftp.ChangeDirectory(uploadURL);
                    }
                    FileStream stream = File.OpenRead(localFile);
                    try
                    {
                        m_ftp.SendFile(stream, nombreFichero);
                    }
                    catch { }
                    stream.Close();
                    m_ftp.Disconnect();
                    //#Si queremos apagar el GPRS por código, tenemos que apagarlo aquí!#
                }
                catch (Exception e)
                {}
            }

     

    Gracias por todo!

    Saludos,

    gunova .

    • Marcado como respuesta gunova viernes, 23 de abril de 2010 15:17
    viernes, 23 de abril de 2010 15:17
  • Hola se que quizas esta cerrado este hilo.

     

    Pero tengo un problema con el envio  y receocion de archivos.

     

    estoy usando la libreria

    Imports OpenNETCF
    Imports OpenNETCF.Net

    Imports ClaseFTP.ClaseFTP

    pero sucede que cuando envio via INALAMBRICA, me realiza correctamente, el problema es cuando lo conecto GPRS.

    y una clase CLASEFTP, que no sabria de quien es, me la paso un amigo que le funciono pero tiene los mismos namespcae y cosas que el CF.

     

    estoy trabajando con VB.NET y CF 3.5

     

    Aver miren el codigo

     

     

    Private Function descargarArchivos() As Boolean
    
     Dim DiskOnChip As String = "\"
     Dim ServerFtp As String = "/"
     ' ObtenerdatosFTP()
    
     Dim bol As Boolean = Conecta_GPRS()
    
     Try
      If bol = True Then
      Dim ArchivosLocal As New List(Of String)
      ArchivosLocal.Add(DiskOnChip & "primeracarga.ini")
      'ArchivosLocal.Add(DiskOnChip & "marcas.txt")
      'ArchivosLocal.Add(DiskOnChip & "promotora.txt")
      'ArchivosLocal.Add(DiskOnChip & "encuestas.txt")
      'ArchivosLocal.Add(DiskOnChip & "preguntas.txt")
      'ArchivosLocal.Add(DiskOnChip & "alternativas.txt")
    
      Dim ArchivosRemoto As New List(Of String)
      ArchivosRemoto.Add(ServerFtp & "/" & "local.txt")
      'ArchivosRemoto.Add((ServerFtp & "/" & "marcas.txt"))
      'ArchivosRemoto.Add((ServerFtp & "/" & "promotora.txt"))
      'ArchivosRemoto.Add((ServerFtp & "/" & "encuestas.txt"))
      'ArchivosRemoto.Add(ServerFtp & "/" & "preguntas.txt")
      'ArchivosRemoto.Add(ServerFtp & "/" & "alternativas.txt")
    
      Dim Gprs As ClaseFTP.ClaseFTP
        'Gprs = New ClaseFTP.ClaseFTP(ServerFtp, DirectorioFtp, UserFtp, PassFtp, PuertoFtp)
      Gprs = New ClaseFTP.ClaseFTP("ftp.xxxxx.com", "/", "pda01@xxx.com", "pda01", 21)
      Gprs.Login()
      'Gprs.ChangeDirectory(DirectorioFtp)
      Gprs.SetBinaryMode(True)
      Dim i As Integer
      For i = 0 To ArchivosRemoto.Count - 1
       ' lblmsj.Text = "Descargando" & ArchivosRemoto(i).ToString
       Gprs.DownloadFile(ArchivosRemoto(i), ArchivosLocal(i))
      Next
      'lblmsj.Text = "Archivos Descargados"
      Gprs.CloseConnection()
      Gprs = Nothing
      Else
      offline()
     ' aqui desconecto el GPRS
      End If
     Catch ex As Exception
      ' Me.lblmsj.Text = ex.Message
      offline()
     End Try
    
    
     End Function

     

     

    Este codigo funciona cuando estoy via WLAN, y pero por GPRS no me funciona.

     

     

    Si laguien pudiera sugerirme alguna forma

     

     

    Agradecidooo !!

     

     

    Saludos a todos.

     

     

     

     

     

     

     

     

     

    • Editado Oscurito jueves, 17 de junio de 2010 14:29 equivocaviones
    jueves, 17 de junio de 2010 14:26
  • Hola,

    Yo lo hago mediante HTTP. Hay un video en http://msdn.microsoft.com/en-us/netframework/bb663033.aspx que te dice cómo hacerlo.

    También necesitas un configurar un servidor web. Yo por ejemplo uso el IIS.

    Me gustaría saber qué librería te permite trabajar con FTP.

     

    Saludos.

    martes, 21 de septiembre de 2010 12:11
  • amm si estuve revisando, interesante voy a probarla..

     

    Bueno la que uso yo, es una libreria  que tambien emplea el traspaso de archivo hacia una cuenta  FTP.

    Esta disponible en la web, pero si no , te la puedo, dar es simple de usar, pero bien eficaz.

     

    Saludos.

     

    miércoles, 22 de septiembre de 2010 16:38