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

C++Builder Discussion :

Erreur de socket avec le composant Indy idHTTP [Trucs & Astuces]


Sujet :

C++Builder

  1. #1
    Membre éclairé
    Avatar de Etanne
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 469
    Points : 855
    Points
    855
    Par défaut Erreur de socket avec le composant Indy idHTTP
    Bonjour voici le code lorsque que j'ai mis lorsque je clique sur un bouton:
    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
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
     
            TFileStream *f ;
     
            try
            { 
                    f = new TFileStream ("c:\\test.txt", fmCreate   );
                    Robot->Get("www.etanne.com/index.php",f);
     
            }
            __finally
            {
                    f->Free() ;
     
            }
    }
    J'ai juste mis sur mon canevas, le bouton et le composant idHTTP.

    J'obtient à l'execution l'erreur suivant:


    Merci,
    Florian.
    "Phylactère temporaire" = tooltips

    Votre problème a été résolu ? Alors utilisez sur et

  2. #2
    Candidat au Club
    Inscrit en
    Janvier 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Salut,
    J'ai moi même rencontré le problème lors du développement d'un bot IRC et je dois dire que la manière dont les composants Indy gèrent les exceptions m'a un peu dérouté...
    En effet a chaque fois qu'une connection sur une socket est refusée, ou un bind sur tel port refusée etc...cela provoque une exception qui est en général une instance de la classe ESocketError (elle même étant une sous-classe de la classe Exception). De ce fait lorsqu'il se produit une connection refusée etc... cela nous affiche une messagebox nous disant que telle exception s'est produite. Pour éviter que notre programme affiche ce message d'erreur qui est celui par defaut, il y a selon moi 2 solutions.

    1)
    Soit a chaque appel à une méthode provenant d'une classe Indy on encadre celle-ci d'un bloc "try ...catch" pour "attraper" l'eventuelle exception et mettre un message d'erreur personnalisé ou rien du tout si vous le souhaitez.
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    try {
    idhttp1->get(...);
    }
    catch(ESocketError *e){...}
    2)
    On peut décider de n'afficher que les exceptions qui sont instances de telle classe d'exception par l'intermédiaire du composant "TApplicationEvents" situé dans la barre "Supplément".
    Ensuite il faut rajouter ce code dans la méthode évenementielle suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    void __fastcall TForm1::ApplicationEvents1Exception(TObject *Sender,
          Exception *E)
    {
    if(E->ClassNameIs("ESocketError")==true)
            {
            tcp->Close();
            }
    }
    Ceci permet de n'afficher que les exceptions autre que celle de la classe ESocketError et ce n'affichera donc plus la fameuse messagebox avec la croie rouge ce dessus.

    De plus je peux vous dire que le message d'exception qui est affiché vous indique la socket distance n'a pas été connectée, soit le serveur est en panne , soit la page n'existe plus...
    Voila, en espérant vous avoir aidé.
    Amicalement.
    X-F

  3. #3
    Membre éclairé
    Avatar de Etanne
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 469
    Points : 855
    Points
    855
    Par défaut
    Merci beaucoup de ton aide
    "Phylactère temporaire" = tooltips

    Votre problème a été résolu ? Alors utilisez sur et

  4. #4
    Membre éclairé
    Avatar de Etanne
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 469
    Points : 855
    Points
    855
    Par défaut
    Et mon erreur était aussi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Robot->Get("http://www.etanne.com/index.php",f);
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Robot->Get("www.etanne.com/index.php",f);
    "Phylactère temporaire" = tooltips

    Votre problème a été résolu ? Alors utilisez sur et

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/02/2008, 09h29
  2. Envoi de mails avec les composants Indy
    Par Pascal Fonteneau dans le forum Web & réseau
    Réponses: 4
    Dernier message: 21/01/2008, 20h27
  3. [TCP] Client/Serveur avec les composants Indy
    Par bakaneko dans le forum C++Builder
    Réponses: 2
    Dernier message: 14/02/2007, 12h47
  4. erreur de socket avec applet
    Par fumiste972 dans le forum Applets
    Réponses: 3
    Dernier message: 18/07/2006, 16h11
  5. probleme avec composant indy IDhttp
    Par ulysse66x dans le forum Composants VCL
    Réponses: 3
    Dernier message: 16/06/2003, 09h35

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