Go Down

Topic: Ethernet shield externen DNS mitgeben? (Read 2897 times) previous topic - next topic

laserbrain

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.

mkl0815

#1
Jun 18, 2012, 04:42 pm Last Edit: Jun 18, 2012, 04:51 pm by mkl0815 Reason: 1
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.

mkl0815

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
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.

laserbrain

Oh man! Vielen Dank für Eure Antworten. So läuft es super mit den Informationen aus der Ethernet Lib!

Ihr seid echt spitze!


Hobo_D

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?

jurs


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

Go Up