diff --git a/BaseCommon/NetUtils.cpp b/BaseCommon/NetUtils.cpp index e0d3ac9..3ba794c 100644 --- a/BaseCommon/NetUtils.cpp +++ b/BaseCommon/NetUtils.cpp @@ -18,6 +18,7 @@ */ #include +#include #include #include "NetUtils.h" @@ -119,3 +120,21 @@ void CNetUtils::setPort(struct sockaddr_storage& addr, in_port_t port) break; } } + +void CNetUtils::getIPString(const struct sockaddr_storage& sas, std::string& str) +{ + const struct sockaddr_storage* sasptr = &sas; + switch(sasptr->ss_family) { + char s[1024]; + case AF_INET: + inet_ntop(AF_INET, &(TOIPV4(sas)->sin_addr), s, 1024); + break; + + case AF_INET6: + inet_ntop(AF_INET6, &(TOIPV6(sas)->sin6_addr), s, 1024); + break; + + default: + str.clear(); + } +} diff --git a/BaseCommon/NetUtils.h b/BaseCommon/NetUtils.h index fc2d565..c3688e4 100644 --- a/BaseCommon/NetUtils.h +++ b/BaseCommon/NetUtils.h @@ -42,4 +42,5 @@ public: static bool lookup(const std::string& hostname, sockaddr_storage& addr, struct addrinfo& hints); static bool match(const sockaddr_storage& addr1, const sockaddr_storage& addr2, IPMATCHTYPE type); static void setPort(struct sockaddr_storage& addr, in_port_t port); + static void getIPString(const struct sockaddr_storage& sa, std::string& string); }; \ No newline at end of file