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 :
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.
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;
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:
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...
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;
C'est bizarre cette erreur, non?
PS: J'y connais rien en truc machin reseau sous Delphi.
Partager