You will need to use ethernet code that supports DNS resolution of the IP address. Below is some code I've used for simple testing that uses a special ethernet library.
//zoomkat 11-13-10
//Kegger ethernet client with DHCP/DNS test code
//using the Kegger ethernet library
//for use with IDE 0021 and W5100 ethernet shield
//open serial monitor to see what the arduino receives
//push the shield reset button to run client again
// http://kegger.googlecode.com/files/Ethernet.zip
#include <Ethernet.h>
#include "Dhcp.h"
#include "Dns.h"
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
boolean ipAcquired = false;
DnsClass googleDns;
void setup()
{
Serial.begin(9600);
Serial.println("getting ip...");
int result = Dhcp.beginWithDHCP(mac);
if(result == 1)
{
ipAcquired = true;
byte buffer[6];
Serial.println("ip acquired...");
Dhcp.getMacAddress(buffer);
Serial.print("mac address: ");
printArray(&Serial, ":", buffer, 6, 16);
Dhcp.getLocalIp(buffer);
Serial.print("ip address: ");
printArray(&Serial, ".", buffer, 4, 10);
Dhcp.getSubnetMask(buffer);
Serial.print("subnet mask: ");
printArray(&Serial, ".", buffer, 4, 10);
Dhcp.getGatewayIp(buffer);
Serial.print("gateway ip: ");
printArray(&Serial, ".", buffer, 4, 10);
Dhcp.getDhcpServerIp(buffer);
Serial.print("dhcp server ip: ");
printArray(&Serial, ".", buffer, 4, 10);
Dhcp.getDnsServerIp(buffer);
Serial.print("dns server ip: ");
printArray(&Serial, ".", buffer, 4, 10);
//// Do DNS Lookup
googleDns.init("web.comporium.net", buffer); //Buffer contains the IP address of the DNS server
googleDns.resolve();
int results;
while(!(results=googleDns.finished())) ; //wait for DNS to resolve the name
if(results != 1)
{
Serial.print("DNS Error code: ");
Serial.print(results,DEC);
}
googleDns.getIP(buffer); //buffer now contains the IP address for google.com
Serial.print("Web Server IP address: ");
printArray(&Serial, ".", buffer, 4, 10);
Client client(buffer, 80);
Serial.println("connecting...");
if (client.connect()) {
Serial.println("connected");
client.println("GET /~shb/arduino.txt HTTP/1.0");
client.println();
while(true){
if (client.available()) {
char c = client.read();
Serial.print(c);
}
if (!client.connected()) {
Serial.println();
Serial.println("disconnecting.");
client.stop();
spinForever();
}
} // while(true)
} //if(client.connect())
else {
Serial.println("connection failed");
}
}
else
Serial.println("unable to acquire ip address...");
}
void printArray(Print *output, char* delimeter, byte* data, int len, int base)
{
char buf[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
for(int i = 0; i < len; i++)
{
if(i != 0)
output->print(delimeter);
output->print(itoa(data[i], buf, base));
}
output->println();
}
void loop()
{
spinForever();
}
void spinForever()
{
for(;;)
;
}