Erreur 10049 avec winsock [Résolu]

cs_gagou9 128 Messages postés vendredi 19 septembre 2003Date d'inscription 20 novembre 2007 Dernière intervention - 12 août 2006 à 00:46 - Dernière réponse : cs_gagou9 128 Messages postés vendredi 19 septembre 2003Date d'inscription 20 novembre 2007 Dernière intervention
- 13 août 2006 à 21:25
Salut !!
ma question : j'ai une erreur 10049 avec winsock, que faire ?

bon, depuis quelques jours je suis dans la realisation d'un prog visant a permettre a mes amis lituaniens d'ajouter des photos sur mon site, via ftp.
raison de la creation d'un tel programme :
 - je ne souhaite pas leur imposer d'apprendre l'utilisation d'un client ftp standart
 - ils ne s'y connaissent pas tres bien en informatique
 - par http ? je suis chez free... et c'est limité a 2mo... alors pour une video......
 - surtout, je veux faire un prog simple, et sans fioritures !
 - bien evidemment le but 1er est de recuperer ttes les photos que j'ai pas...

qu'ais je fais jusqu'a maintenant ?
 - interface graphique (hmm environ 15minutes...)
 - gestion du controle, avec un winsock, qui envoie les commandes, interprete les messages du serveur.
 - gestion du transfert, avec un autre winsock, qui envoie les fichiers.

quand mon erreur arrive-t-elle ?
 et bien c'est simple, sur un ordi, j'ai vb 6 anglais d'installé, quand je teste tout va bien, sauf une fois, mais je me rapelle plus quelle erreur c'etait.
 et sur un autre ordi, MEME configuration materielle, TOUT PAREIL, meme windows, suelement, pas de vb d'installé.
 et, dernier point, les deux machines sont derriere un routeur...

si vous connaissez la solution, merci!

Gagou9

PS : n'allez pas me dire que mon sujet est mal presenté hein !! loool
Afficher la suite 

8 réponses

Répondre au sujet
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 13 août 2006 à 17:53
+3
Utile
Re
Mais le bug, il apparait sur quel socket (FTPControl ou FTPEchange) ?
Et sur quelle ligne ?
Si c'est sur FTPEchange, que vaut PortEnvoi ?
A mon avis, il vaut 0 puisque la variable perd sa valeur entre deux scrutations.
Remplace le
Dim PortEnvoi As Variant
par
Static PortEnvoi As Variant

Règles de programmation :
- Dimensionner ses variables en tête de procédure
- Eviter le type Variant qui nécessite plus de temps machine et masque certains problèmes
D'ailleurs pou PortEnvoi, tu prends le soin de lui attribuer une valeur avec une conversion CLng, alors pourquoi ne pas lui donner le type Long tout de suite ?

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'accro
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Jack
cs_gagou9 128 Messages postés vendredi 19 septembre 2003Date d'inscription 20 novembre 2007 Dernière intervention - 12 août 2006 à 01:08
0
Utile
Suis-je bete, sans le code source, vous etes mal !

voici la partie pour le winsock de gestion :
pb est une barre de progression





Private Sub FTPcontrol_DataArrival(ByVal bytesTotal As Long)
    Dim txtRecu() As String
    Dim Temp As String
    Dim CodeRecu As Integer
    Temp = vbNullString
    FTPcontrol.GetData Temp, vbString
    Temp = Left(Temp, Len(Temp) - 2)
    'à ce moment txtRecu contient toute la ligne renvoyée par le serveur
    txtRecu() = Split(Temp, vbCrLf)
    CodeRecu = Left(txtRecu(0), 3)
    'ici codeRecu stocke... bah le code recu par le serveur
   
    If CodeRecu = 220 Then  'si on a reçu le code d'accueil
        FTPcontrol.SendData "USER monUSER" & vbCrLf

    End If
   
    If CodeRecu = 331 Then  'demande de MDP
        FTPcontrol.SendData "PASS monPASS" & vbCrLf
    End If
   
    If CodeRecu = 530 Then  'si on recoi le code Mot de passe invalide
        FTPcontrol.Close
    End If

    If CodeRecu = 230 Then  'si on reçoi le code "logged in"
        FTPcontrol.SendData "TYPE I" & vbCrLf
    End If
   
    If CodeRecu = 200 Then  'type I accepté (image)
        FTPcontrol.SendData "PASV" & vbCrLf
    End If
   
    If CodeRecu = 227 Then  'si on est accepté dans le passive mode        'CALCUL DU PORT DISTANT POUR L'ENVOI'
        Dim TempPort As Variant
        Dim portEnvoi As Variant
        TempPort = Split(txtRecu(0), ")")
            TempPort = Split(TempPort(0), "(")
            TempPort = Split(TempPort(1), ",")
            portEnvoi = CLng(TempPort(4)) * 256 + CLng(TempPort(5))        'FIN DU CALCUL'
                'PARTIE UPLOAD'
        Open "image" For Binary Access Read Lock ReadWrite As #1
            Buffer = Input(LOF(1), #1)
        Close #1
        Dim nomFichier As String
        nomFichier = Dial.FileTitle
                       
        FTPcontrol.SendData "STOR " & nomFichier & vbCrLf   'demande d'envoi
    End If

    If
CodeRecu = 150 Then  'requette d'envoi de fichier acceptée
        FTPechange.Connect "ftpperso.free.fr", portEnvoi    'Connection avec le serveur d'envoi
        pb.Max = Len(Buffer)
    End If
End Sub




ici la partie pour le winsock qui gere le transfert :







Private Sub FTPechange_Connect()







    FTPechange.SendData Buffer & vbCrLf







End Sub











Private Sub FTPechange_Error(ByVal Number As Integer,     Description As String, ByVal Scode As Long, ByVal     Source As
String, ByVal HelpFile As String, ByVal     HelpContext As Long, CancelDisplay As Boolean)






       
    Messages.AddItem "ERREUR: Upload : " & Number & " - " & Description    '& " - " & Source







    Err.Clear







End Sub











Private Sub FTPechange_SendProgress(ByVal bytesSent As Long, ByVal bytesRemaining As Long)







    pb.Value = Len(Buffer) - bytesRemaining







End Sub











Private Sub FTPechange_SendComplete()







    FTPechange.SendData "QUIT" & vbCrLf







    FTPechange.Close







End Sub






voila !!

merci encore !
Gagou
9
Commenter la réponse de cs_gagou9
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 12 août 2006 à 17:24
0
Utile
Salut
Et le texte de l'erreur, s'il te plait
Car les codes d'erreur supérieurs à 255 n'appartiennent plus à VB mais aux composants.
Difficile donc de reproduire cette erreur sur le Winsock.

Apparamment, d'après les moteurs de recherches (que bien sûr tu as dû consulter), cette erreur peut survenir lorsque tu pointes un socket sur une adresse IP invalide (au sens technique).
Cette erreur peut apparaitre lorsque tu essayes d'imposer une adresse IP locale ou un port en utilisant le Bind.
Je pense qu'il s'agit donc d'une erreur de paramétrage, pas de code.

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'accro
Commenter la réponse de cs_Jack
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 12 août 2006 à 17:27
0
Utile
D'autre part, rappel : Tu ne peux pas implanter un EXE créé sous VB6 directement sur une machine vierge.
Il faut créer un empaquetage afin d'y installer les OCX et autres DLL.
Commenter la réponse de cs_Jack
cs_gagou9 128 Messages postés vendredi 19 septembre 2003Date d'inscription 20 novembre 2007 Dernière intervention - 13 août 2006 à 13:10
0
Utile
Salut, et merci d'apporter votre aide !
hum, le texte de l'erreur, le voici :
    "address is not avaible from the local machine"

voila,
j'ai bien sur installé tous les composants nécessaires sur ma machine de test, sinon l'application ne se serait meme pas lancée !
et oui, les moteurs m'ont donné la meme chose que toi (logique...) mais je comprends pas pourquoi j'ai cette erreur, car j'ai laissé les parametres par defaut des controles winsock, pour la connection j'ai


FTPcontrol.Connect "ftpperso.free.fr" , 21



donc voila, je sais pas trop ou est le bug !!

merci, et a bientot !
Gagou9
Commenter la réponse de cs_gagou9
cs_gagou9 128 Messages postés vendredi 19 septembre 2003Date d'inscription 20 novembre 2007 Dernière intervention - 13 août 2006 à 18:18
0
Utile
Salut !!


alors, deja je ne connais pas le type static, et en plus, je n'ai pas
créé le code moi meme, du moins pour portEnvoi et TempPort.


Mais l'erreur se fait sur FTPcontrol.


on m'a dit que le routeur foutait la merde donc je pense que c'est ça qui est chiant pour mon programme !


je renviendrais demain, pour tester, car là je suis chez un pote, et j'ai pas le temps !!!!


MERCIIIIIIII !!!!


Ciao,


Gagou9
Commenter la réponse de cs_gagou9
cs_gagou9 128 Messages postés vendredi 19 septembre 2003Date d'inscription 20 novembre 2007 Dernière intervention - 13 août 2006 à 20:51
0
Utile
Salut ! (re)

Après vérification, je me suis rendu compte que l'erreur venait du
FTPechange. mais n'ayant pas VB sur moi je ne peux pas tester la
solution proposée, on verra plus tard !

voici une copie d'ecran du programme :


merci encore,


Ciao


Gagou9
Commenter la réponse de cs_gagou9
cs_gagou9 128 Messages postés vendredi 19 septembre 2003Date d'inscription 20 novembre 2007 Dernière intervention - 13 août 2006 à 21:25
0
Utile
re !!


c'est bon, j'ai testé, merci beaucoup !!

c'etait le
Static PortEnvoi As Long

qui etait bugué !!


Merci,


Gagou9
Commenter la réponse de cs_gagou9

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.