LwIP: wie IP-Adresse eines Servers über Namen finden

OP #7509637
Lesenswert?

Die Frage im Titel ist etwas uneindeutig sonst wird die Zeile zu lang. "Server" ist hier im Kontext ein Partner im Heimnetz den man Daten schickt. Hier die genaue Fragestellung:

Ist-Zustand: Ein STM32 Controller mit LwIP (UDP aktiviert, Server) ist im Heimnetz angeschlossen. Im einfachsten Fall besteht das Heimnetz aus Fritzbox, Home-PC und STM32 Controller, evtl mehrere. Der STM kann dort problemlos Daten empfangen und dem Sender (hier der Home-PC) auch Daten zurücksenden (Echo Server). Dazu braucht er keine eigene Adress-Findung da er ja selbst angesprochen wird und damit weiss woher ein Request bzw. Daten kommen. Der Home-PC kann Daten zum STM sowohl über IP-Adresse als auch über den Netzwerk- Namen senden. Der STM32 hat DHCP in LwIP aktiviert und kann so immer über den Namen gefunden/angesprochen werden.

Anders herum funktioniert das sicher auch: der STM32 schickt von sich aus (jetzt als UDP "Client") Daten an ein gewünschtes Ziel wenn dessen IP-Adresse bekannt ist. Die Funktionalität ist im vorangegangenem Absatz bereits enthalten wo ein Echo zurückgesendet wird.

Jetzt wird es für mich unklar: mein STM32 Controller mit LwIP soll Daten an ein Ziel im Heimnetz senden. Da sich die IP-Adressen laufend ändern können ist die Adresse des Ziels (entweder Home-PC oder weiterer Controller) nicht bekannt und es sollen auch keine festen Adressen vergeben werden. Also soll/muss die Adresse aktuell über den Netzwerk-Namen ermittelt werden. Die Namen sind im Netzwerk bekannt, die Fritzbox vergibt ja über DHCP die IP-Adressen zu den Beteiligten (Namen) im Heimnetz.

Nur: welcher Mechanismus liefert mir im LwIP-Gefüge die Auflösung von bekannten Netzwerk-Namen zur gewünschten IP-Adresse? LwIP ist ja in diesem Fall nicht der Nameserver sondern die Fritzbox. Meine Suche diesbezüglich brachte keinen Erfolg. Die LwIP- Programmbeispiele bringen auch keine Aufklärung. Übliche Aufrufe für TCP oder UDP funktionieren ja nur über die IP-Adresse, nicht über Netzwerk-Namen. Nach meinem Verständnis muss ich mir in LwIP - wie auch immer - erst die Zieladresse "besorgen" um diese dann in einem TCP oder UDP Request zu benutzen. Geht das transparent wenn man das Socket-API benutzt?

#7509648
Lesenswert?

Wastl schrieb:

Nur: welcher Mechanismus liefert mir im LwIP-Gefüge die Auflösung von bekannten Netzwerk-Namen zur gewünschten IP-Adresse?

Ganz normal DNS: dns_gethostbyname --> https://www.nongnu.org/lwip/2_1_x/group__dns.html#ga1e040ec38166dc9bfcc3473aab0c799f

Die FritzBox verteilt ja nicht nur IP-Adressen per DHCP, sondern gibt sich darüber auch als DNS-Server zu erkennen.

Dafür sollte LWIP_DHCP_MAX_DNS_SERVERS > 0 sein (https://www.nongnu.org/lwip/2_0_x/group__lwip__opts__dhcp.html#ga60ccc20fbb08be24b5d5f599dd47a6a6).

OP #7509651
Lesenswert?

Martin H. schrieb:

Ganz normal DNS: dns_gethostbyname

Danke dafür. Soweit war ich schon, bekam aber immer Fehlercodes!=0 zurück.

Martin H. schrieb:

Dafür sollte LWIP_DHCP_MAX_DNS_SERVERS > 0 sein

Das könnte der Knackpunkt sein dass ich keinen erfolgreichen Call absetzen konnte. Ich war dann bisher der Meinung die Funktionen beziehen sich auf einen LwIP-internen DNS.

#7509679
Lesenswert?

Wastl schrieb:

Ich dachte das würde dann Sinn ergeben wenn ich ein Netzwerk aus Nur-LwIP-Controllern habe in dem sonst kein DNS vorhanden ist, also ohne PC und Fritzbox.

Kann man natürlich machen, aber in so einem Sonderfall musst du den Server eben selbst programmieren und natürlich auch die Host-Tabellen selbst pflegen. Letzteres macht bei dir eben der DHCP-Server in der FritzBox automatisch.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren