Hallo Gerd,
die Hilfe die hier gegeben wird ist freiwillig und jeder der sich hier mit den geposteten Problemen beschäftigt und versucht zu helfen, macht das in seiner Freizeit und entscheided selbst, wann er die Zeit hat etwas zu posten. Es ist also manchmal ein wenig Geduld notwendig, keiner kann erwarten das sofort und zeitnah die richtigen Antworten kommen. Zudem setzen wir auch immer ein wenig Eigeninitiative des Fragestellenden voraus.
In meinem Post hatte ich ja bereits auf die Fähigkeit der Ethernet-Lib selbst hingewiesen, DNS Server zu nutzen. In Deinem Sketch steht aber lediglich ein "Ethernet.begin(mac, ip, sub)". Abgesehen davon das das Subnet NICHT der dritte Parameter ist, das wäre der DNS-Server (siehe Ethernet - Arduino Reference), kann Dein Sketch auch mit der zusätzlichen DNS-Lib nicht funktionieren, denn es fehlt das Gateway. Dein Arduino weiss also nicht, wo er Daten hinschicken soll, wenn sie nicht in Dein lokales Netz 192.168.178.0/24, sondern nach "Draussen" gehen sollen. Ich vermute mal Du hast ein FritzBox und vermutlich hat diese die 192.168.178.1. Das ist das Gateway, also wenn Du so willst die Vermittlungsstelle in die weite Welt. Diese Gateway-IP musst Du beim Ethernet.begin() mit angeben, dann gehen auch die DNS-Anfragen nach draussen.
Nun zu Deinem Problem, wenn Du das include "dns.h" entfernst. Damit wird dann die zusätzliche DNS-Lib nicht mehr geladen. Allerdings verwendest Du in Deinem Sketch aber weiter die Funktionen und Klassen dieser Lib. Das kann dann natürlich nicht mehr funktionieren und erklärt die Fehler die Du bekommst.
Ich persönlich verfolge bei meinem Post immer den Ansatz - Hilfe zur Selbsthilfe. Ich denke das ich auch das was Udo meint. Es geht darum etwas zu lernen und am besten lernt man aus den Fehlern, die man selbst behebt, weil man das Problem vestanden hat. Daher auch mein Hinweis, Dir die Parameter des Ethernet.begin() genauer anzuschauen.
Deinen Sketch solltest Du also erstmal um die zusätzlichen Parameter für die Kommunikation mit der weiten Welt ergänzen:
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 178, 177 };
byte dns[] = { 8,8,8,8 };
byte gateway[] = { 192, 168, 178, 1 };
byte sub[] = { 255, 255, 255, 0 };
...
Ethernet.begin(mac, ip, dns,gateway,sub);
ACHTUNG!! die Gateway-IP ist nur geraten, hier solltest Du die tatsächliche IP Deines Routers verwenden.
Mario.