IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau C Discussion :

SMTP ne veut pas se connecter !


Sujet :

Réseau C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    ingénieur calcul
    Inscrit en
    Décembre 2007
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur calcul
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 363
    Par défaut SMTP ne veut pas se connecter !
    Bonjour,
    j'essaye de faire fonctionner le CLIENT_SMTP simple que j'ai trouvé sur ce même site (http://broux.developpez.com/articles/protocoles/smtp), et ça veut pas marcher; j'ai réussi à isoler l'endroit où ça bloque, au moment de la connection je crois; juste avant ça il avait bien trouvé un socket bien que je n'ai rien pu en faire afficher d'intéressant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        printf("DVA: connect error-1 !\n");
        if(connect(sock,(SOCKADDR *) &sin, sizeof(SOCKADDR)) == SOCKET_ERROR)
        {
     
    		printf("DVA: connect error-2 !\n");
            perror("connect()");
    		printf("DVA: connect error-3 !\n");
            exit(errno);
    		printf("DVA: connect error-4 !\n");
        }
    Voici par ailleurs ce que me donne le début de ça avec les indications que je lui ai demandé de me donner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    C:\C\Client_SMTP>client_smtp mail.txt
    DVA: Ok init() Ok
    DVA: Ok ds app() !
    DVA: Avt fopen()=00000000 !
    DVA: Ok fopen()=00413C28 !
    DVA: Avt sock()=000003A4 !
    DVA: Ok sock()=000003A4 !
    DVA: Ok gethostbyname(buffer)=á³Jx☺ !
    DVA: Ok gethostbyname(buffer)=smtp.wanadoo.fr !
    DVA: Ok gethostbyname(buffer)=smtp.wanadoo.fr !
    DVA: connect error-1 !
    DVA: connect error-2 !
    connect(): No error
    DVA: connect error-3 !
     
    C:\C\Client_SMTP>
    Que puis je faire pour qu'il réussissé à se connecter ou que dois-je vérifier ? En particulier comment voir ce que vaut SOCKADDR, et est-ce utile ?
    David

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Tu sembles être sous Windows. Que dit la fonction WSAGetLastError() ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre éclairé
    Homme Profil pro
    ingénieur calcul
    Inscrit en
    Décembre 2007
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur calcul
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 363
    Par défaut
    à quel moment ? Je vais essayer juste là où ça plante; je l'ai mis comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    	printf("DVA: connect error-1 !\n");
        if(connect(sock,(SOCKADDR *) &sin, sizeof(SOCKADDR)) == SOCKET_ERROR)
        {
     
    		printf("DVA: connect error-2 !\n");
            perror("connect()");
    		printf("DVA: connect error-3 !\n");
            WSAGetLastError();
            exit(errno);
    		printf("DVA: connect error-4 !\n");
    Mais comment interpreter ce qu'il voit ? Parce que là, rien n'a changé dans ce qu'il dit.
    Je suis bien sous W2K avec VC++5.0 mais en C paskeu j'y comprends rien au C++, je trouve pas ça assez lisible.
    David

  4. #4
    Membre chevronné Avatar de cmoibal
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2007
    Messages : 361
    Par défaut
    la valeur de SOCKET_ERROR ??? c'est quoi ???

    s'il a passer le test ce que SOCKET_ERROR != -1 -> alors une connexion est établie !!!!! avec la fonction de perror() avec aucune erreur .... je pense que le test est totalement faux ?

  5. #5
    Membre éclairé
    Homme Profil pro
    ingénieur calcul
    Inscrit en
    Décembre 2007
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur calcul
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 363
    Par défaut
    merci à Médinoc de m'avoir indiqué comment regarder WSAGetLastError()); j'avais pas percuté que c'était un entier, qui vaut 10061; de la même façon ou presque, c'est quel type de variable le SOCKET_ERROR ? J'ai essayé pour un entier avec %d dans printf et il me répond "-1"; Alors qu'en faire de plus ?

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    L'erreur 10061 correspond à "connexion refusée".

    Tu peux consulter la table System Error Codes ou Windows Sockets Error Codes sur le site de Microsoft, ou, sous Windows, obtenir un message plus explicite avec la fonction FormatMessage().
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Il ne sert à rien, ton appel, là...
    Un printf("%d\n", WSAGetLastError()); serait plus utile, tu ne crois pas ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. JBoss ne veut pas se connecter à une base Oracle
    Par SuperPat dans le forum Wildfly/JBoss
    Réponses: 7
    Dernier message: 07/03/2009, 12h53
  2. Réponses: 8
    Dernier message: 13/06/2007, 22h57
  3. PHP5 ne veut pas se connecter à MySQL5 !
    Par sami_c dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 13
    Dernier message: 17/05/2007, 14h16
  4. java web start qui veut pas se lancer
    Par calvin dans le forum JWS
    Réponses: 4
    Dernier message: 30/06/2004, 11h42
  5. [Kylix] Un programme compilé ne veut pas se lancer
    Par LightBeam dans le forum EDI
    Réponses: 1
    Dernier message: 05/08/2003, 10h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo