Android Question FTP List fails sometimes

dannyjon

Member
Licensed User
Longtime User
I have created a conn to the FTP and initialized it as per code. When I do the ftplist command, sometimes it works and lists the files, sometimes not. The conn is closed after each listing and is initialized when required in the code.

Seems to fail if I hit back button, wait a moment, then start app again.

B4X:
First I init the connection and test it with a FTP command
Sub listNewServerDWG_Click
    lvDWGWeb.Clear
    lvDWGWeb.AddSingleLine(DateTime.Time(DateTime.Now) & " " & DateTime.Date(DateTime.Now))
    lvDWGWeb.AddSingleLine("Trying to connect to FTP...")
    ftpclient.Initialize("FTP", "ftp.xx.net", 21, "x", "x")
    ftpclient.TimeoutMs=5000
    ftpclient.PassiveMode=True
    'This checks the FTP is actually connected
    ftpclient.SendCommand("NOOP","")     
End Sub

Handle the response from the FTP Command:
Sub ftp_CommandCompleted ( Command As String, Success As Boolean, ReplyCode As Int, ReplyString As String)
    Log("Command " & Command & " Success " & Success  & " Replycode " &  ReplyCode & " Replystring " & ReplyString)
    If ReplyCode = 200 Then
        lvDWGWeb.AddSingleLine(DateTime.Time(DateTime.Now) & " " & DateTime.Date(DateTime.Now))

        lvDWGWeb.AddSingleLine("FTP NOOP command completed:  " & ReplyCode)
        lvDWGWeb.AddSingleLine("Looking for drawings on server...")
        ListClientServerDrawings
    Else
        lvDWGWeb.AddSingleLine(DateTime.Time(DateTime.Now) & " " & DateTime.Date(DateTime.Now))

        lvDWGWeb.AddSingleLine("FTP command NOOP failed. Try and connect again.")
    End If
End Sub

Now list the files on the web-server:
Sub ListClientServerDrawings
    Dim sd As Object = ftpclient.List("/drawings/client_001")
    wait for (sd) FTP_ListCompleted (ServerPath As String, Success As Boolean, Folders() As FTPEntry, Files() As FTPEntry)
    Dim filecounter As Int = 0
    If Success Then
        If Files.Length=0 Then
            lvDWGWeb.AddSingleLine("server list empty 233.")  '!!!< This is returned to user       
    ftpclient.Close
            Return
        End If
        dwgServerList.Initialize
        Dim bt (Files.Length) As Button

        For f = 0 To Files.Length-1
            Dim filename As String = Files(f).Name
            Dim lastModDate As String=DateTime.Date(Files(f).Timestamp)
            Dim lastModTime As String = DateTime.Time(Files(f).Timestamp)
            dwgServerList.Add(filename & "~" & lastModDate & "~" & lastModTime)
            lvDWGWeb.AddSingleLine(filename & "~" & lastModDate & "~" & lastModTime)
            filecounter=filecounter+1
            'Scrollview - add dynamic buttons
            bt(f).Initialize("btn")
            bt(f).Color=Colors.Yellow
            bt(f).TextColor=Colors.Black
            bt(f).Text="Test " & f
            bt(f).Tag=filename
            svSelectPreview.Panel.AddView(bt(f),10,10 + (f*50),200,50)
        Next
    Else
        lvDwg.AddSingleLine("Error getting server dwg list.")
        ftpclient.Close
        Return
    End If
    ftpclient.Close
End Sub
 
Top