summaryrefslogtreecommitdiffhomepage
path: root/NetEx/NetAddr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'NetEx/NetAddr.cpp')
-rw-r--r--NetEx/NetAddr.cpp65
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();
}
}
-