Bonjour à tous et à toutes,
Je me permets de vous écrire car je rencontre un problème suite à l'utilisation de Winsock et je suis compplétement bloqué après avoir passé la journée à travailler dessus.
Je souhaite transferer un fichier vers mon serveur FTP local (IIS). Pour cela j'utilise 3 controle winsock comme j'ai pu le voir dans divers tutos et sources de vbfrance.
La connexion au serveur FTP et OK mais je n'arrive pas à effectuer le transfert.
Voila mon code complet
<---- Début du code ---->
Dim Port As Long 'Stocke le port renvoyé par le mode passif
Dim StrBuffer As Variant 'reception du fichier telecharger
Dim Tabstr() As String 'Stocke la reponse de la commande LIST
Dim coderecu As String
Private Sub Form_Load()
'On se connecte au serveur FTP local
SckFtp.Connect "localhost", "21"
End Sub
Private Sub SckFtp_Connect()
' On précise les identifiants de connexion
MsgBox "Envoi du user"
SckFtp.SendData "USER " & "usr_ftp" & vbCrLf
End Sub
Public Sub SckFtp_DataArrival(ByVal bytesTotal As Long)
'Reception des codes (Msg) renvoyé par le serveur
txtrecu = vbNullString
SckFtp.GetData txtrecu, vbString
'Decoupage du txt recu par ligne dans le tableau temp
Dim Temp() As String
Temp = Split(txtrecu, Chr(10))
txtrecu = Temp(UBound(Temp) - 1)
'Affichage des msg serveurs
For i = 0 To UBound(Temp) - 1
' Si le 4éme caractére n'est pas - alors c un code
If Mid(Temp(i), 4, 1) <> "-" Then
coderecu = Left(Temp(i), 3)
MsgBox coderecu
Select Case coderecu
Case "220" ' On précise le mot de passe
MsgBox "Service pret pour un nouvel utilisateur"
Case "331"
MsgBox "L'utilisateur est correct, préciser le mot de passe"
SckFtp.SendData "PASS " & "usr_ftp" & vbCrLf
Case "230"
MsgBox "L'utilisateur est bien authentifié, connexion OK"
' Demande de connexion en mode Passif
SckFtp.SendData "PASV" & vbCrLf
Case "227" 'Passive mode accepté
MsgBox "Passive mode accepté"
' On va récupèrer le port auquel on va connecter le socket de données
Temp = Split(txtrecu, ")")
Temp = Split(Temp(0), "(")
Temp = Split(Temp(1), ",")
Port = CLng(Temp(4)) * 256 + CLng(Temp(5))
Open "c:\test.txt " For Binary Access Read Lock Read Write As #1
StrBuffer = Input(LOF(1), #1)
Close #1
SckUp.Connect "localhost", Port
SckFtp.SendData "STOR Test.txt"
'SckUp.Connect "localhost", Port
'SckFtp.SendData "STOR " & "\test.txt" & vbCrLf
Case "150" 'le serveur accepte la connection
SckFtp.SendData StrBuffer & vbCrLf
'Voila, le serveur recoit le fichier
Case "221" 'Déconnection
SckFtp.Close
Case "226" 'transfert terminé pour le sckdata ou scup (reception du LIST)
SckData.Close
SckData.Connect "localhost", Port
SckFtp.SendData "LIST" & vbCrLf
Etat = "LIST"
Case Else
MsgBox "Autre code :" & coderecu
End Select
End If
Next i
End Sub
Public Sub Sckup_Connect()
MsgBox "Sckup_Connect"
SckUp.SendData StrBuffer & vbCrLf
MsgBox StrBuffer
End
End Sub
<---- Fin du code ---->
Merci à tous ceux qui pourront m'indiquer des anomalies!!

A+++

Akita