1 // Arduino DNS client for WizNet5100-based Ethernet shield
2 // (c) Copyright 2009-2010 MCQN Ltd.
3 // Released under Apache License, version 2.0
4 
5 #ifndef DNSClient_h
6 #define DNSClient_h
7 
8 #include <EthernetUdp.h>
9 
10 class DNSClient
11 {
12 public:
13     // ctor
14     void begin(const IPAddress& aDNSServer);
15 
16     /** Convert a numeric IP address string into a four-byte IP address.
17         @param aIPAddrString IP address to convert
18         @param aResult IPAddress structure to store the returned IP address
19         @result 1 if aIPAddrString was successfully converted to an IP address,
20                 else error code
21     */
22     int inet_aton(const char *aIPAddrString, IPAddress& aResult);
23 
24     /** Resolve the given hostname to an IP address.
25         @param aHostname Name to be resolved
26         @param aResult IPAddress structure to store the returned IP address
27         @result 1 if aIPAddrString was successfully converted to an IP address,
28                 else error code
29     */
30     int getHostByName(const char* aHostname, IPAddress& aResult);
31 
32 protected:
33     uint16_t BuildRequest(const char* aName);
34     uint16_t ProcessResponse(uint16_t aTimeout, IPAddress& aAddress);
35 
36     IPAddress iDNSServer;
37     uint16_t iRequestId;
38     EthernetUDP iUdp;
39 };
40 
41 #endif
42