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

Composants VCL Delphi Discussion :

TIdHTTPServer et erreur socket # 10049


Sujet :

Composants VCL Delphi

  1. #1
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut TIdHTTPServer et erreur socket # 10049
    Bonjour,
    Quand je lance mon application, j'obtiens un message d'erreur et le serveur HTTP ne se lance pas. Pourriez-vous m'aider ?

    Message d'erreur:

    "Socket Error # 10049
    cannot assign request address."

    J'utilise Delphi 2005 Edition Perso et la suite de composant Indy 9.

    1) J'ai créé une application nommée MLHS (My Little HTTP Server) et sur la form1, j'ai glissé le composant TIdHTTPServer.

    2) Sur le OnCreate de la form1, j'ai tapé le code suivant :

    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
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      with IdHTTPServer1 do
      begin
     
        Bindings.Clear;
     
        Bindings.Add;
        Bindings.items[0].IP := '82.244.XX.XX'; //L'adresse IP Fixe de ma connexion internet
        Bindings.items[0].Port := 8080;
     
        Active:=true;
     
      end;
    end;
    J'ai appuyé sur F9 et j'ai obtenu le message d'erreur cité plus haut. Si je change le code ci-dessus et que je remplace l'adresse IP Fixe de ma connexion internet par l'adresse IP Fixe de ce PC sur mon réseau domestique (càd: 192.168.0.7) alors le message d'erreur disparait, et le serveur HTTP est bien UP via 192.168.0.7:8080.

    Sachant un peu ce que je fais, j'ai désactivé le mode routeur de mon modem (FreeBox) et j'ai relancé la connexion réseau. Une fois fait, le code écrit plus haut fonctionne (le serveur HTTP est UP via 82.244.xx.xx:8080) et l'astuce écrit juste après indique le message d'erreur (à juste titre, il est vrai...).

    Ma question... Pourquoi le composant TIdHTTPServer n'arrive pas a identifier l'adresse ip de ma connexion internet quand je suis derrière un routeur ? Dès fois, il m'arrive d'installer EasyPHP sur mon ordinateur et Apache n'a aucun mal a identifier 127.0.0.1, 192.168.0.7 et 82.244.xx.xx comme valide pour mon ordinateur et tout ça en même temps.

    Est ce qu'il faut que je rajoute un autre composant (SuperSocketQuiVaTaider) ? Car je doute que TIdHTTPServer veuille bien passer outre cette erreur et accepter l'adresse IP de ma connexion internet, sans que je désactive le mode routeur de mon modem.

    De plus, le bout de code suivant à le même problème:

    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
    procedure TForm1.FormCreate(Sender: TObject);
    var dIdStack: TidStack;
        i: integer;
        s: string;
    begin
     
      dIdStack:=TidStack.CreateStack;
      try
     
        for i := 0 to dIdStack.LocalAddresses.Count-1 do
         ListBox1.Items.Add(dIdStack.LocalAddresses[i]);
     
      finally
        dIdStack.Free;
      end;
    end;
    Merci d'avance pour vos judicieux conseils... car j'aimerais bien utiliser le serveur HTTP généré par le composant TIdHTTPServer et ceci via l'extèrieur de mon réseau domestique... avec mon modem en mode routeur...

    C'est bizarre cette erreur, non?

    PS: J'y connais rien en truc machin reseau sous Delphi.

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Après une recherche avec

    L’erreur Winsock 10049 se produit lorsque l'on tente de créer un socket avec une adresse qui n’est pas inscrite sur la machine.


    En gros c'est normal vu que tu utilises un routeur, il faut que tu mettes soit l'adresse réseau générique de ton PC (127.0.0.1) ou l'adresse de ton PC (168.192.0.XX)
    Puis que tu dises à ton routeur de rediriger les appel sur le port 8080 vers l'adresse IP de ton PC sur le port 8080


    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Je suis allé dans ma config routeur (j'étais sûr de l'avoir fait) et en fin de compte, je l'ai mal configuré lol, j'avais pas redirigé le TCP lol alalala, le gars qui dort debout... bon ben je vais me coucher, merci encore... et à dans 4mois... à chaque fois que je passe une nuit blanche, bizarre, bizarre

    Merci beaucoup, Malatar

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

Discussions similaires

  1. Message d'erreur socket en anglais
    Par samworld dans le forum Développement
    Réponses: 4
    Dernier message: 18/10/2007, 21h19
  2. Problème erreurs sockets sous Linux
    Par Ange44 dans le forum Linux
    Réponses: 6
    Dernier message: 05/09/2006, 16h16
  3. Erreur Socket Asynchrone 10053
    Par QAYS dans le forum Delphi
    Réponses: 2
    Dernier message: 16/06/2006, 07h44
  4. SQL Server: Java Erreur Socket
    Par BenoitM dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 28/04/2003, 16h32

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