Versuch's mal mit dieser Version:
#include <SPI.h>
#include <Ethernet.h>
#include <Dns.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 178, 177 };
byte dnsserver[] = { 8,8,8,8 };
byte gateway[] = { 192, 168, 178, 150 };
byte sub[] = { 255, 255, 255, 0 };
int ret;
void setup() {
Serial.begin(9600);
Ethernet.begin(mac, ip, dnsserver, gateway, sub);
Serial.print("TEST ");
DNSClient dnsC;
char host[] = "http://www.google.de";
IPAddress remote_addr;
IPAddress server_ip = ( 8, 8, 8, 8 ); // Google DNS
dnsC.begin(server_ip);
ret = dnsC.getHostByName(host, remote_addr);
Serial.print("Ausgabe ");
Serial.print(remote_addr);
}
void loop() {
}
Die kompiliert bei mir (IDE 1.0.1) ohne Fehler. Zu Deinem Fehler: Du darfst den Namen "dns" nicht zweimal vergeben, mit unterschiedlicher Bedeutung. Dies hat der Compiler reklamiert und das zu Recht.
Der Include "Dns.h" ist keine Fremd-Bibliothek, die Datei ist Teil der Ethernet-Bibliothek. Sie wird normalerweise intern verwendet, es hält uns jedoch niemand davon ab, sie auch direkt zu verwenden. Wenn der OP die IP-Adresse des verwendeten Dienstes unbedingt wissen will, dann darf er das, auch wenn er den Namen im Sketch auch direkt verwenden kann.