Akita95
Messages postés23Date d'inscriptiondimanche 13 mars 2005StatutMembreDernière intervention30 juillet 2007
-
6 oct. 2006 à 17:07
Akita95
Messages postés23Date d'inscriptiondimanche 13 mars 2005StatutMembreDernière intervention30 juillet 2007
-
10 oct. 2006 à 13:16
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!!
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 6 oct. 2006 à 18:39
Salut
Je n'ai pas de serveur ftp sous la main, mais il faudrait nous dire jusqu'où cela fonctionne.
- Identification par user et password : Ok ?
- Demande de mode passive : Ok ?
Quelle réponse renvoit-il ?
Le n° de port est-il cohérent ?
- Ensuite, tu envoies le fichier sur le 1er socket : A quoi te sert SckUp ?
Vérifie s'il ne foudrait pas plutôt l'envoyer grace à SckUp ...
- Qu'est ce que c'est que SckData ?
D'où sort-il ? comment est-il initialisé / utilisé ?
- Dans le "Open" du fichier, "Lock Read Write" ne sert à rien (pas gènant)
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Champion du monde de boule de cristal - 2005 Le savoir est la seule matière qui s'accroit quand on
Akita95
Messages postés23Date d'inscriptiondimanche 13 mars 2005StatutMembreDernière intervention30 juillet 2007 10 oct. 2006 à 13:16
Salut et désolé pour la réponse tardive.
Le code est ok jusqu'à l'acceptation du passive mode, après être passé en passive mode les commandes utilisées pour envoyer le fichier ne fonctionnent pas... :-(