ESP12 Wifi client - Erreur quand on utilise ip à la place de domaine

essayez avec

client.print(String("GET /index.php") + " HTTP/1.1\r\n" +
                 "Host: ninnin.esp8286.fr\r\n" +
                 "Connection: close\r\n" +
                 "\r\n"
                );

il se peut que votre serveur web refuse une requête HTTP dont le Host serait une IP ? (la spec 1.1 dit que ce doit être le nom de domaine du serveur)

Idem, connexion failed et rien dans les logs apache2 coté serveur.

avec exactement le même message ?

[Connecting to 10.0.0.45 ... [hostByName] Host: 10.0.0.45 is a IP!

Avec ce message:

[Connecting to 10.0.0.45 ... [hostByName] Host: 10.0.0.45 is a IP!
:ref 1
:ctmo
:abort
:ur 1
:dsrcv 0
:del
connection failed!]

Au cas "où", j'ai tenté un:

IPAddress ip(10,0,0,45);
.....
if (client.connect(ip, 80))

Et encore la même impasse.

Surprenant

C’est juste un ESP12 ou un nodeMCU ?

Juste un esp12, le même que sur les cartes wemos D1 mini etc....

J'ai testé la création d'une route statique sur le routeur.

const char* host = "rx200";
.....
[Connecting to rx200 ... [hostByName] request IP for: rx200
[hostByName] Host: rx200 IP: 10.0.0.45
:ref 1
:ctmo
:abort
:ur 1
:dsrcv 0
:del
connection failed!]

Apparamment y a deja eu le souci: ESP8266 connecting to IP address fails - Home Automation - Arduino Forum

effectivement - et sans solution...

essayer un wireshark sur ce qu'il se passe sur le réseau ?

Non, j'ai déjà perdu pas mal de temps, tant pis :-/
Je vais reprendre le boulot là où j'en étais avec le dev direct sur un hebergement chez ovh, le souci étant que avec leur ***** de mise en cache, il y a un délai entre l'upload des pages php et l'affichage réél lors d'une demande effective des pages.
Ou alors je reprends un serveur dédié chez eux, mais j'en ai acheté exprès pour ne plus en payer....

En tout cas j'aimerai vraiment trouver POURQUOI ce ne fonctionne pas.... c'est le genre de truc qui va me tourner dans le tête pendant des jours ça -_-

Bonjour,
Votre problème m'intriguait parce que j'ai souvent utilisé client.connect avec un esp12 et une IP... Je suis allé voir la méthode connect dans WifiClient.h :

virtual int connect(IPAddress ip, uint16_t port) override;
virtual int connect(const char *host, uint16_t port) override;
virtual int connect(const String& host, uint16_t port);

La variante avec char *host renvoie vers un hostByName qui n'aime pas les IPs... Pourquoi pas...
Puisque vous voulez vous connecter sur une IP que vous connaissez, pourquoi ne lui la passez vous pas directement, à savoir :

IPAddress ipa(10,0,0,45);
client.connect(ipa, port);

Bonne bidouille,

MicroQuettas

effectivement à tester, mais dans le lien mentionné ci dessus @Daenerys disait aussi avoir essayé avec une instance d'IP et que ça merdait aussi...

(la variante avec const String& fait appel à celle avec la cString donc va demander un hostByName aussi)

à noter que la detection d'une IP retourne bien 1 donc on a le message mentionné plus haut mais cette IP devrait bien être utilisée. ce n'est pas là que ça plante.

int ESP8266WiFiGenericClass::hostByName(const char* aHostname, IPAddress& aResult, uint32_t timeout_ms)
{
    ip_addr_t addr;
    aResult = static_cast<uint32_t>(INADDR_NONE);

    if(aResult.fromString(aHostname)) {
        // Host name is a IP address use it!
        DEBUG_WIFI_GENERIC("[hostByName] Host: %s is a IP!\n", aHostname);
        return 1;
    }

il y a une notion de timeout peut-être à creuser...

Tu es chez Free ?

Déjà testé avec une IP et nada.
Et free ou pas, on parle de réseau local :wink:

Ninnin:
Et free ou pas, on parle de réseau local :wink:

Je pense que ce que @lesept a en tête c'est des tas de soucis rencontrés par les membres du forum avec des Freebox.

Oui et un changement récent, fin d'année dernière, de la gamme de ports utilisables pour un accès de ce genre.
Ce n'est peut-être pas le même problème que tu rencontres.

Pour mon serveur, j'ai dû utiliser une adresse locale statique 192.168.0.51 et le port 49155 avec la redirection qui va bien.

Jamais je n'utilise le mode routeur des box des opérateurs :slight_smile:
Pas confiance, des bugs, pas possible de configurer comme on veut à 100% ....
J'ai mon propre réseau local géré par un routeur central qui va bien ^^
Et le problème vient peut-être de là, même si là je sèche... et plus le temps de m'y pencher pour le moment, faut que j'avance ^^

PS: cela dit j'ai trouvé une solution ..... pour le moins ................ xD
J'ai mis un serveur chez un voisin (avec son accord hein je précise -- je vous vois venir xD ) et ouvert les port 80 et 22 vers l'ip du routeur. Et je peux me connecter sur son IP Internet et avoir accès à mon serveur. Même si je n'aime pas spécialement avoir un serveur qui tourne sans un pare feu digne de ce nom sur le réseau -- surtout le ssh qui se fait scanner 100 fois par minutes.... bon y a fail2ban mais quand meme...

Jamais je n'utilise le mode routeur des box des opérateurs :slight_smile:

idem - j'ai mon réseau aussi, avec mon propre DNS pour le réseau local.

Votre voisin est en IP fixe (certes pas souvent de changement de l'IP de sa box, mais ça peut arriver) ?

Oui, fibré et ip fixe ^^