diff options
Diffstat (limited to 'NetEx/NetAddr.cpp')
-rw-r--r-- | NetEx/NetAddr.cpp | 65 |
1 files changed, 39 insertions, 26 deletions
diff --git a/NetEx/NetAddr.cpp b/NetEx/NetAddr.cpp index 62eb24a..5e5468d 100644 --- a/NetEx/NetAddr.cpp +++ b/NetEx/NetAddr.cpp @@ -3,28 +3,39 @@ Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors Copyright (c) 1997-2006, Destroyer Studios LLC. - AUTHOR: John DiCamillo + AUTHOR: John DiCamillo - OVERVIEW - ======== - Network Address + OVERVIEW + ======== + Network Address */ #include "NetAddr.h" -#include "NetHost.h" -#include "NetLayer.h" -#include <ctype.h> +#ifdef _WIN32 +#include <winsock2.h> +#else +#include <arpa/inet.h> +#include <netdb.h> +#include <sys/socket.h> +#endif -NetAddr::NetAddr(const char* host_name, WORD p) - : addr(0), port(p) +#include <cctype> +#include <cstddef> +#include <cstdint> +#include <cstring> + + +NetAddr::NetAddr(const char* host_name, std::uint16_t p) : + addr(0), + port(p) { if (host_name && *host_name) { - HOSTENT* h = 0; + struct hostent* h = nullptr; - if (isdigit(*host_name)) { - DWORD a = inet_addr(host_name); + if (std::isdigit(*host_name)) { + auto a = inet_addr(host_name); h = gethostbyaddr((const char*) &a, 4, AF_INET); } else { @@ -33,7 +44,7 @@ NetAddr::NetAddr(const char* host_name, WORD p) if (h) { if (h->h_addr_list) { - addr = **(DWORD**) (h->h_addr_list); + addr = **(std::uint32_t**) (h->h_addr_list); } } } @@ -41,30 +52,34 @@ NetAddr::NetAddr(const char* host_name, WORD p) Init(); } -NetAddr::NetAddr(DWORD a, WORD p) - : addr(a), port(p) + +NetAddr::NetAddr(std::uint32_t a, std::uint16_t p) : + addr(a), + port(p) { Init(); } -NetAddr::NetAddr(const NetAddr& n) - : addr(n.addr), port(n.port) + +NetAddr::NetAddr(const NetAddr& n) : + addr(n.addr), + port(n.port) { Init(); } -// +--------------------------------------------------------------------+ void NetAddr::Init() { - ZeroMemory(&sadr, sizeof(sadr)); + std::memset(&sadr, 0, sizeof(sadr)); sadr.sin_family = AF_INET; sadr.sin_port = ::htons(port); sadr.sin_addr.s_addr = addr; } + void NetAddr::InitFromSockAddr() { @@ -72,7 +87,6 @@ NetAddr::InitFromSockAddr() port = ::ntohs(sadr.sin_port); } -// +--------------------------------------------------------------------+ sockaddr* NetAddr::GetSockAddr() const @@ -80,26 +94,25 @@ NetAddr::GetSockAddr() const return (sockaddr*) &sadr; } -size_t + +std::size_t NetAddr::GetSockAddrLength() const { return sizeof(sadr); } -// +--------------------------------------------------------------------+ void NetAddr::SetSockAddr(sockaddr* s, int size) { if (s) { - ZeroMemory(&sadr, sizeof(sadr)); + std::memset(&sadr, 0, sizeof(sadr)); if (size > sizeof(sadr)) - CopyMemory(&sadr, s, sizeof(sadr)); + std::memcpy(&sadr, s, sizeof(sadr)); else - CopyMemory(&sadr, s, size); + std::memcpy(&sadr, s, sizeof(sadr)); InitFromSockAddr(); } } - |