Upload file ftp avec Inet via Free.fr

Herve_be Messages postés 1182 Date d'inscription   Statut Membre Dernière intervention   -  
Herve_be Messages postés 1182 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Mon programme VB6 envoie des fichiers en ftp sur mon serveur avec le code ci-dessous.
Tout fonctionne parfaitement sauf avec quelques clients Free : ça boucle.
Comme ce n'est pas chez moi je ne peux pas travailler en pas à pas pour savoir où.
Pourriez-vous me dire où ce programme pourrait blucler et ce que je pourrais faire pour en sortir ?
Grand merci d'avance

' Source = fichier à envoyer; Destination = URL destinataire
On Error GoTo InetError
Inet.AccessType = icUseDefault
Inet.Protocol = icFTP
Inet.URL = "ftp://ftp.rudyv.be"
Inet.UserName = "MyUserName"
Inet.Password = "MyPassword"

Inet.Execute , "PUT " & Chr(34) & Source & Chr(34) & " " & Chr(34) & "/" & Destination & Chr(34)
While Inet.StillExecuting
    DoEvents
    Sleep 1000 '1sec
    DoEvents
Wend

Inet.Execute , "CLOSE"
While Inet.StillExecuting
    DoEvents
    Sleep 1000 '1sec
    DoEvents
Wend
Exit Sub

InetError:
If Err.Number = 35764 Then    ' still executing last request
    Inet.Cancel
    Resume Next
ElseIf Err.Number = 35761 Then
    Destination = "35761 : Request Timed out"
    Inet.Cancel
    Resume Next
End If

MsgTxt = "Erreur Inet " & Err.Number & " (" & Err.Description & ")" & Chr$(10) & "ligne " & Erl
   On Error GoTo 0
End Sub

3 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour, je vois deux possibilités évidentes de "bouclage": l'attente après le PUT et l'attente après le CLOSE.
    tu pourrais probablement afficher quelque part ce que le programme est en train d'attendre, cela t'aiderait à déterminer s'il s'agit bien de cela.
    0
  2. Herve_be Messages postés 1182 Date d'inscription   Statut Membre Dernière intervention   11
     
    Merci,
    J'ai oublié de dire qu'une sub est appelée chaque fois que le status change

    Private Sub Inet_StateChanged(ByVal State As Integer)
    Select Case State
        Case icNone: InetState(0).Text = InetState(0).Text & vbCrLf & "Connect Failed.... Error"
        Case icResponseReceived: InetState(0).Text = InetState(0).Text & vbCrLf & "Response Received"
        Case ichostresolvinghost: InetState(0).Text = InetState(0).Text & vbCrLf & "Looking for IP Address"
        Case icHostResolved: InetState(0).Text = InetState(0).Text & vbCrLf & "Found IP Address"
        Case icConnecting: InetState(0).Text = InetState(0).Text & vbCrLf & "Connecting"
        Case icConnected: InetState(0).Text = InetState(0).Text & vbCrLf & "Connected"
        Case icRequesting: InetState(0).Text = InetState(0).Text & vbCrLf & "Sending a Request"
        Case icRequestSent: InetState(0).Text = InetState(0).Text & vbCrLf & "Request Send"
        Case icReceivingResponse: InetState(0).Text = InetState(0).Text & vbCrLf & "Receiving Response"
        Case icResponseReceived: InetState(0).Text = InetState(0).Text & vbCrLf & "Response Received"
        Case icDisconnecting: InetState(0).Text = InetState(0).Text & vbCrLf & "Disconnecting"
        Case icDisconnected: InetState(0).Text = InetState(0).Text & vbCrLf & "Disconnected"
        Case icResponseCompleted: InetState(0).Text = InetState(0).Text & vbCrLf & "Response Completed"
        Case icError
          Destination = "Impossible de transférer le fichier : " & Inet.ResponseCode & " : " & Inet.ResponseInfo
    End Select
    End Sub
    0
  3. Herve_be Messages postés 1182 Date d'inscription   Statut Membre Dernière intervention   11
     
    Bonjour,
    J'ai un peu modifié la boucle pour qu'elle sorte après 10 fois
    TimeOut = 0   ' Edit 200430 : ajout d'un time out pour éviter de boucler
    While Inet.StillExecuting And TimeOut < 10
    DoEvents
    Sleep 1000 '1sec
    DoEvents
    TimeOut = TimeOut + 1
    Wend
    
    0