From 4000c9199b7f91907519a46d692d660012ade090 Mon Sep 17 00:00:00 2001 From: amcewen Date: Fri, 4 Feb 2011 21:15:42 +0000 Subject: [PATCH] Added new method to UDP to take a hostname rather than an IP address. Part of issue 243 --- libraries/Ethernet/Udp.cpp | 17 +++++++++++++++++ libraries/Ethernet/Udp.h | 3 +++ 2 files changed, 20 insertions(+) diff --git a/libraries/Ethernet/Udp.cpp b/libraries/Ethernet/Udp.cpp index a8c98c3f4..2c8b10332 100644 --- a/libraries/Ethernet/Udp.cpp +++ b/libraries/Ethernet/Udp.cpp @@ -30,6 +30,7 @@ #include "socket.h" #include "Ethernet.h" #include "Udp.h" +#include "Dns.h" /* Constructor */ UDP::UDP() : _sock(MAX_SOCK_NUM) {} @@ -74,6 +75,22 @@ void UDP::stop() _sock = MAX_SOCK_NUM; } +int UDP::beginPacket(const char *host, uint16_t port) +{ + // Look up the host first + int ret = 0; + DNSClient dns; + IPAddress remote_addr; + + dns.begin(Ethernet.dnsServerIP()); + ret = dns.getHostByName(host, remote_addr); + if (ret == 1) { + return beginPacket(remote_addr, port); + } else { + return ret; + } +} + int UDP::beginPacket(IPAddress ip, uint16_t port) { _offset = 0; diff --git a/libraries/Ethernet/Udp.h b/libraries/Ethernet/Udp.h index 8cd3b065a..99df53f15 100644 --- a/libraries/Ethernet/Udp.h +++ b/libraries/Ethernet/Udp.h @@ -60,6 +60,9 @@ public: // Start building up a packet to send to the remote host specific in ip and port // Returns 1 if successful, 0 if there was a problem with the supplied IP address or port int beginPacket(IPAddress ip, uint16_t port); + // Start building up a packet to send to the remote host specific in host and port + // Returns 1 if successful, 0 if there was a problem resolving the hostname or port + int beginPacket(const char *host, uint16_t port); // Finish off this packet and send it // Returns 1 if the packet was sent successfully, 0 if there was an error int endPacket();