Connexion ftp avec winsock et possiblité de passer par un proxy !!!!

Description

Slt

Bon tout d'abord je tiens a prévenir que je suis très jeune (14) donc que le code ne seras pas eblouissant mais sa peut toujours servir.
Il permet de se connecter a un ftp grace a winsock (d'accord il y en a beaucoups) avec un proxy ou sans. Les seules fonction qu'il a sont connection-deconnection(Il de vrait être mis a jour dès que j'aurais des réponses a certaines questions.

Si vou pouviez d'ailleur m'aidez a faire en sorte que la commande list marche et que l'on puisse up dans le serveur je vous serait reconnaissant.

Enfin bon a part sa le code n'est pas long et je pense assez bien expliqué a vous de voir maintenant.

Je mets le code mets vous ne trouverez surement pas quels sont les objets utilisé sans télécharger le ZIP.

Source / Exemple :


Private Sub connect_Click()

   If Option1.Value = True Then
   If Text1.Text = "" Then
   MsgBox "Veuillez rentrer une adresse proxy ex: 127.125.145.2"
    Else
   If Text2.Text = "" Then
   MsgBox "Veuillez rentrer un nom de prot ex:80"
    Else
   Winsock1.Close '// On ferme la connection (évite ainsi des problemes)
   Winsock1.connect Text1.Text, Text2.Text '//On se connecte au proxy
End If
End If
End If
If Option2.Value = True Then
   Winsock1.Close '// On ferme la connection (évite ainsi des problemes)
   Winsock1.connect serveur.Text, port.Text '//On se connecte au proxy
End If
End Sub

Private Sub deconnect_Click()

Winsock1.Close
Winsock2.Close
connect.Enabled = True
deconnect.Enabled = False
End Sub

Private Sub Form_Load()

End Sub

Private Sub Option1_Click()

Text1.Enabled = True
Text2.Enabled = True
End Sub

Private Sub Option2_Click()

Text1.Enabled = False
Text2.Enabled = False
End Sub

Private Sub Winsock1_Connect() '// Quand on est connecté au proxy
If Option1.Value = True Then
    journal.Text = " Connection au proxy accepter" '// on certifie que la connection au proxy est faite
    Winsock1.SendData "CONNECT " & serveur.Text & ":" & port.Text & " HTTP/1.0" & vbCrLf & vbCrLf '// On envoie au proxy la commande pour qu'il se connecte au FTP
End If
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) '// quand la commande senddata a envoyer notre demande et qu'elle est arrivé
    Dim repftp As String
    Dim Codeftp As String
    Dim Temp
    
    Winsock1.GetData repftp '// Récuperation de la réponse du serveur.
    journal.Text = journal.Text & repftp '//On la mets dans le journal
    
    ftpCode = 0
    
    If Mid(repftp, 4, 1) <> "-" Then '// Si le quatrième caratère de la réponse n'est pas un "-" on récupère le code.
        Codeftp = Left(repftp, 4)
    End If

    
    Select Case Codeftp '// On donne les réponse en foànction de se que le serveur nous demande
        
        Case "220 ": '// Si il nous demande l'utilisateur
            Winsock1.SendData "USER " & login.Text & vbCrLf '// On lui donne l'utilisateur
            journal.Text = journal.Text & "USER " & login.Text & vbCrLf '// on mets dans le journal
        
        
        Case "331 ": '// Si il nous demande le mot de passe
            Winsock1.SendData "PASS " & pass.Text & vbCrLf '// On lui donne le PASS
            journal.Text = journal.Text & "PASS " & pass.Text & vbCrLf '// On mets dans le journal
      
        
        Case "230 ": '// Si le mot de passe et le nom d'utilisateur sont acceptée
            deconnect.Enabled = True
            connect.Enabled = False
            
            Winsock1.SendData "PASV" & vbCrLf '// On envois la commande PASV pour s'avoir sur quel port on se connecte
            journal.Text = journal.Text & "PASV" & vbCrLf '// On mets dans le journal
                
        
        Case "227 ": '// Si commande PASV acceptée
            '// On récupère le portsur lequel on va connecter le socket de données
            Temp = Split(repftp, ")")
            Temp = Split(Temp(0), "(")
            Temp = Split(Temp(1), ",")
            FtpDataRemotePort = CLng(Temp(4)) * 256 + CLng(Temp(5))
            '// Récuperation du port terminé, connection au socket de données
            Winsock2.connect serveur.Text, FtpDataRemotePort
            
            'If ftpdata.State <> 0 Then
            '    ' et on envois la commande LIST
            '    ftpdialog.SendData "LIST" & vbCrLf
            '    ftpinfo.Text = ftpinfo.Text & "LIST" & vbCrLf
            'Dim StrString As String
            'ftpdialog.GetData StrString, vbString, bytesTotal
            'List1.AddItem (StrString)
            ' End If

        
        Case "221 ": '// si le serveur a fermé la connection
            deconnect.Enabled = False
            Winsock1.Close
            'If Winsock2.State <> 0 Then
            '    Winsock2.Close
            'End If
            connect.Enabled = True
    End Select
    
End Sub

Conclusion :


Biens maintenant a vous de me notez. N'hésitez pas a me réprimendez tant que se ne sont pas des mots grossiers. Et si vous pouviez m'aidez. Merci.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.