DnsQuery for NetworkSocketAPI

Fork of DnsQuery by NetworkSocketAPI

Revision:
2:12d08f0f20cf
Parent:
1:5d978992a518
Child:
3:5705fdae6185
--- a/DnsQuery.h	Fri Jul 24 22:43:25 2015 +0000
+++ b/DnsQuery.h	Wed Aug 05 21:58:57 2015 +0000
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013 Henry Leinen (henry[dot]leinen [at] online [dot] de)
+/* 
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
  * and associated documentation files (the "Software"), to deal in the Software without restriction,
@@ -19,70 +19,33 @@
 #define __DNSQUERY_H__
 
 #include "SocketInterface.h"
-
-typedef struct {
-    union {
-        struct {
-            char o1, o2, o3, o4;
-        };
-        char o[4];
-    } sin_addr;
-    operator char* () { return (char*)this; }
-    char* string_format() { 
-        char ip[7];
-        sprintf(ip,"%d.%d.%d.%d", this->sin_addr.o1, this->sin_addr.o2, this->sin_addr.o3, this->sin_addr.o4);
-        return ip;
-    }
-} IPADDRESS_t;
-
-/** Class DnsQuery implements DNS over UDP functionality.
-  * Example as a typical use case :
-  * @code
-  * #include "mbed.h"
-  * #include "DnsQuery.h"
-  *
-  * void main(void)
-  * {
-  *     IPADDRESS_t ipAddress;  // will receive the ip address of the host
-  *     IPADDRESS_t dnsIp = { 192, 168, 178, 1 };      // Ip Address of the DNS server
-  *     
-  *     DnsQuery dns(Wifi::getInstance(), &dnsIp);
-  *     if (dns.gethostbyname("mbed.org", ipAddress)) {
-  *         printf("Ip-Address of mbed.org is %d.%d.%d.%d\n", ipAddress.sin_addr.o1, ipAddress.sin_addr.o2, ipAddress.sin_addr.o3, ipAddress.sin_addr.o4);
-  *     } else {
-  *         printf("Unable to obtain IP-Address\n");
-  *     }
-  * }
-  * @endcode
-  */
 class DnsQuery
 {
 public:
     /** Constructor to instantiate a DnsQuery object.
-      * @param wifi : A valid pointer to a Wifi Object, which can be used to obtain a UDP socket object.
-      * @param dnsip : A valid pointer which holds the IPAddress of the DNS server to query.
+      * @param wifi : A valid pointer to a UDP socket
       */
     DnsQuery(SocketInterface* sock);
     
     
     /** Function gethostbyname implements the functionality to query a domain name server for an IP-Address of a given hostname.
-      * @param hostname : the hostname of interest as a string.
+      * @param hostname : the hostname of interest as a string - format must be without http:// or www. IE google.com, mbed.org, etc
       * @param ipaddress : a reference to a IPADDRESS_t object which will receive the resolved IP Address of the host in question.
-      * @returns true if successfull, or false otherwise.
+      * @returns true if successful, or false otherwise.
       */
-    bool gethostbyname(const char* hostname, IPADDRESS_t &ipaddress);
+    bool gethostbyname(const char* hostname, char* ipaddress);
     /** Function gethostbyname implements the functionality to query a domain name server for an IP-Address of a given hostname.
       * @param hostname : the hostname of interest as a string.
       * @param ipaddress : a reference to a IPADDRESS_t object which will receive the resolved IP Address of the host in question.
-      * @returns true if successfull, or false otherwise.
+      * @returns true if successful, or false otherwise.
       */
-    bool getIP(const char* hostname, IPADDRESS_t &ipaddress);
+    bool getIP(const char* hostname, char* ipaddress);
 protected:
-    bool resolve(char* resp, IPADDRESS_t &ipaddress);
-    bool parseRR(char *resp, int& c, IPADDRESS_t& adr );
+    bool resolve(char* resp, char* ipaddress);
+    bool parseRR(char *resp, int& c, char* adr );
 
 protected:
-    IPADDRESS_t _dnsip;
+    char* _dnsip;
     char* _string_ip;
     SocketInterface* socket;