2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
42#include "net/in/SocketAddrInfo.h"
44#ifndef DOXYGEN_SHOULD_SKIP_THIS
46#include "log/Logger.h"
49#include <netinet/in.h>
61 int SocketAddrInfo::resolve(
const std::string& node,
const std::string& service,
const addrinfo& hints) {
94 : sockaddr_in{.sin_family = AF_INET, .sin_port{}, .sin_addr{}, .sin_zero{}};
103 static char hostBfr[NI_MAXHOST];
104 static char servBfr[NI_MAXSERV];
105 std::memset(hostBfr, 0, NI_MAXHOST);
106 std::memset(servBfr, 0, NI_MAXSERV);
108 getnameinfo(currentAddrInfo->ai_addr,
109 currentAddrInfo->ai_addrlen,
114 NI_NUMERICHOST | NI_NUMERICSERV);
116 struct sockaddr_in* aiAddr =
reinterpret_cast<sockaddr_in*>(
currentAddrInfo->ai_addr);
118 const std::string format =
"AddressInfo:\n"
121 " ai_family = %v (PF_INET = %v, PF_INET6 = %v)\n"
122 " ai_socktype = %v (SOCK_STREAM = %v, SOCK_DGRAM = %v)\n"
123 " ai_protocol = %v (IPPROTO_TCP = %v, IPPROTO_UDP = %v)\n"
124 " ai_addrlen = %v (sockaddr_in = %v, "
125 "sockaddr_in6 = %v)\n"
126 " ai_addr = sin_family: %v (AF_INET = %v, "
131 el::Loggers::getLogger(
"default")->trace(format.c_str(),
144 sizeof(
struct sockaddr_in),
145 sizeof(
struct sockaddr_in6),
std::string getCanonName()
struct addrinfo * addrInfo
sockaddr_in getSockAddr()
struct addrinfo * currentAddrInfo
int getaddrinfo(const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res)