J'essaie d'utiliser Winsock pour télécharger des fichiers et les enregistrer. Dans mon cas, j'ai un MSHFlexGrid avec 2 colonnes: une avec URL et l'autre avec le "chemin + nom de fichier" (où le fichier va être sauvegardé). J'itérer toutes les lignes d'appeler la fonction suivante:Winsock télécharger des fichiers - vb6
Public Function DownloadSock(ArqURL As String, ArqDestino As String) As Boolean
'ArqURL is the file URL
'ArqDestino is where the downloaded file is going to be stored, in my hard disc
Dim arquivo() As Byte
Dim ficheiroID As Integer
ficheiroID = FreeFile
On Error GoTo Trata_erro
Open ArqDestino For Binary Access Write As #ficheiroID
Me.Winsock1.Connect ArqURL, 80
Me.Winsock1.GetData arquivo()
Put #ficheiroID, , arquivo()
Close #ficheiroID
DownloadSock = True
Exit Function
Trata_erro:
MDIForm1.Text1 = MDIForm1.Text1 & "Error! " & Err.Number & Err.Description & " - " & Err.Source & " - URL: " & ArqURL & " - Destino: " & ArqDestino & vbNewLine
DownloadSock = False
End Function
Je reçois cette erreur
40006: protocole incorrect ou connexion Etat pour la transaction demandée ou demande
Qu'est-ce que je fais mal?
Merci
Cette approche garderait tout asynchrone tout en évitant d'avoir à appeler 'DoEvents' en attente de' Winsock.State' pour changer. Je me méfie particulièrement de 'DoEvents' après avoir traité beaucoup trop de problèmes difficiles à déboguer causés par le code qui l'a utilisé, donc j'ai tendance à l'éviter à tout prix, même si cela semble être la façon facile de mettre en œuvre un boucle occupée-attente. –