From 21326918e9caf39c37d487183801715724908f85 Mon Sep 17 00:00:00 2001 From: JustinAJ Date: Sun, 26 Oct 2014 06:13:35 -0400 Subject: [PATCH] Added pton4() and pton6() static functions to Jupiter::Socket. --- Jupiter/Socket.cpp | 16 ++++++++++++++++ Jupiter/Socket.h | 17 +++++++++++++++++ Release/Jupiter.lib | Bin 251098 -> 251718 bytes 3 files changed, 33 insertions(+) diff --git a/Jupiter/Socket.cpp b/Jupiter/Socket.cpp index 7d40c01..cf8f448 100644 --- a/Jupiter/Socket.cpp +++ b/Jupiter/Socket.cpp @@ -300,6 +300,22 @@ char *Jupiter::Socket::resolveHostname(const char *hostname, unsigned int result return Jupiter::Socket::resolveHostname(info, result); } +uint32_t Jupiter::Socket::pton4(const char *str) +{ + in_addr r; + if (inet_pton(AF_INET, str, &r) <= 0) + return 0; + return *reinterpret_cast(&r); +} + +in_addr6 Jupiter::Socket::pton6(const char *str) +{ + in_addr6 r; + if (inet_pton(AF_INET6, str, &r) <= 0) + memset(&r, 0, sizeof(in_addr6)); + return r; +} + Jupiter::Socket *Jupiter::Socket::acceptConnection() { SOCKET tSock = accept(Socket::data_->rawSock, 0, 0); diff --git a/Jupiter/Socket.h b/Jupiter/Socket.h index b455ca6..06498c0 100644 --- a/Jupiter/Socket.h +++ b/Jupiter/Socket.h @@ -28,6 +28,7 @@ #include "Readable_String.h" struct addrinfo; +struct in_addr6; namespace Jupiter { @@ -163,6 +164,22 @@ namespace Jupiter */ static char *resolveHostname(const char *hostname, unsigned int result); + /** + * @brief Reinterprets an IPv4 address as a 32-bit integer in network byte order. + * + * @param str String representation of an IPv4 address. + * @return IPv4 address in network byte order. + */ + static uint32_t pton4(const char *str); + + /** + * @brief Reinterprets an IPv6 address as a 128-bit integer in network byte order. + * + * @param str String representation of an IPv6 address. + * @return IPv6 address in network byte order. + */ + static in_addr6 pton6(const char *str); + /** * @brief Interface to provide simple connection establishing. * Note: When using this method, the hostname and port are NOT stored; thus getHost(), getHostname(), diff --git a/Release/Jupiter.lib b/Release/Jupiter.lib index e93f437ee966814cacbf4395f9d92f916890bec5..ec0085b17256223e359a5491963a9c0350ef2f58 100644 GIT binary patch delta 28952 zcmcJXdwkDjAOEk_u0Om_jPz5uJ?8Le7??a zD0?WcY*zJ>O&hmr(yF=4Kg6r}nl@<}PX7{1GghKAtabg@ACX&%8v2v|K1cfnvU^L_VE-*guq(boSOp!B>31ZP?1s}G= z$MA#kp`n_D^^6lkc4!h~87GES(hOY)Iq)AeNZhWV`7M!g;`Vukn9rDI8LlAfvY!N8 zK?0N`hWJL{2k0N=Cm&ZZAW8Gi7AAL^W#8qfb{FJN^A-9;K>@FsV)Pu*Y+fd;Xqo5rz8X6M!BXAV3!2RI9X_`{ym{4566_kXWVl=Ms z_rJ3=zlJlexQZ+IcaY{*8sk8${!+7M7!zxT`Ira}@&he`=P`a4J|*%{DX~05vjPH;AA%h) z74d$EpEq#@@ULQPKI6oDgZ*5_6>M7U2jw<_cbT7=xPpysH5;}uPHahIKKdcvJL4w? zSCH4=4?fQW8E_3T<&MTzfeFPzT)_v3a^m^fnvu7eAd*59{2$OBh+3^R5ePt{K@<4D zK@-MjBWQ>T6E!KnGEPjmrg>v6I_f6giqItC zJ~3vuX0dM>AjG*N>H7sTFj8brGw zPQ#5v!FkOY+$T=_syWq+3E&f_mf;t061^wB=%_h~-V>*h*@&}~{G7uToIpGfUtaWs z`(Kg_d`^504T HD939#2F~7NW(P^{{I{e634e`4wQxkz;hOvd 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 delta 29088 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