Arduino Forum

International => Deutsch => Topic started by: laserbrain on Jun 18, 2012, 04:24 pm

Title: Ethernet shield externen DNS mitgeben?
Post by: laserbrain on Jun 18, 2012, 04:24 pm
Hi Leute,

also ich bn fleißig am Basteln und mein Ethernet shield tut auch das was es soll. Jetzt muss ich aber eine feste externe DNS IP angeben, damit der Arduino ins Netz finet. Wie kann ich das anstellen? Ich habe noch keinen passenden Befehl hierfüt gefunden.

Diie IP des Arduino ist fest eingetragen.
Title: Re: Ethernet shield externen DNS mitgeben?
Post by: mkl0815 on Jun 18, 2012, 04:42 pm
Ab Version 1.0 der IDE gibt es einen DNSClient.

Folgendes sollte klappen (achtung, ungetestet)
Code: [Select]

//DNS-Client
DNSClient dns;

//DNS-Server
IPAddress dnsserver(8,8,8,8);
IPAddress result;

void setup() {
   dns.begin(dnsserver);
...
}

void loop() {
...
   //namen auflösen. Ergebnis steht in result
   dns.getHostByName("www.arduino.cc",result);
}


Ausserdem kann man noch mit dns.inet_aton("1.2.3.4",result) einen IP-String in eine IP-Adresse umwandeln.
Es gibt bei den Examples auch ein Beispiel "DnsWebClient.ino".

Mario.
Title: Re: Ethernet shield externen DNS mitgeben?
Post by: mkl0815 on Jun 18, 2012, 04:59 pm
Noch eine Ergänzung, das "Ethernet.begin()" wurde offensichtlich auch erweitert:

Code: [Select]

void begin(uint8_t *mac_address, IPAddress local_ip, IPAddress dns_server, IPAddress gateway, IPAddress subnet);

Man kann also in der Reihenfolge (MAC,IP,DNS,GATEWAY,SUBNET) auch gleich am Anfang mit einen DNS-Server angeben. Dieser wird automatisch verwendet, wenn man ein EthernetClient.connect(char* hostname, int port) macht. Ein Auflösen von Hand ist da nicht mehr nötig.
Am besten mal auf die Referenz-Seite schauen: http://arduino.cc/en/Reference/EthernetBegin (http://arduino.cc/en/Reference/EthernetBegin)
Leider fehlt in der Referenz der Ethernet-Lib noch die Beschreibung der DNSClient und DhcpClass Klassen. Ich hab mir das gerade aus den Sourcen zusammengewürfelt.
Mario.
Title: Re: Ethernet shield externen DNS mitgeben?
Post by: laserbrain on Jun 18, 2012, 09:10 pm
Oh man! Vielen Dank für Eure Antworten. So läuft es super mit den Informationen aus der Ethernet Lib!

Ihr seid echt spitze!

Title: Re: Ethernet shield externen DNS mitgeben?
Post by: Hobo_D on Jun 18, 2013, 06:54 pm
Hi,

ich stehe noch ganz am Anfang mit meinem Ethernet Shield.
Ich möchte lediglich meine externe ip wissen und über die RS232 ausgeben.
Somit ist das genau das was ich schon seit Tagen suche.
Das Beispiel mit google ist völlig überladen und aus dem Codeschnippsel werde ich leider noch nicht schlau. Sorry.
Hat jemand das sketch vielleicht schon fertig?
Title: Re: Ethernet shield externen DNS mitgeben?
Post by: jurs on Jun 18, 2013, 07:12 pm

ich stehe noch ganz am Anfang mit meinem Ethernet Shield.
Ich möchte lediglich meine externe ip wissen und über die RS232 ausgeben.
Somit ist das genau das was ich schon seit Tagen suche.


Nein, worum es in diesem alten und von Dir ausgegrabenen Thread geht ist keineswegs das, was Du hier nachfragst. In dem Thread geht es um Nameserver zur Namensauflösung.

Deine "externe IP" kannst Du entweder abfragen, indem Du die Statusseite Deines DSL-Routers abrufst. Fast alle DSL-Router haben irgendwo eine Statusangabe der IP-Adresse (z.B. "WAN IP address" oder wie auch immer) im Router-Menü per HTML abrufbar.

Oder Du machst eine Abfrage auf einen externen Server im Internet, auf dem ein Skript läuft, das Dir Deine IP-Adresse anzeigt. Z.B.:
http://wtfismyip.com/text