14 static std::atomic_flag sigpipe_ignored = ATOMIC_FLAG_INIT;
15 if(!sigpipe_ignored.test_and_set()) {
20 std::signal(SIGPIPE, SIG_IGN);
25 -> std::shared_ptr<addrinfo> {
27 hints.ai_family = PF_UNSPEC;
28 hints.ai_socktype = SOCK_STREAM;
32 auto port_str = std::to_string(port);
34 = getaddrinfo(address.c_str(), port_str.c_str(), &hints, &res0);
39 auto ret = std::shared_ptr<addrinfo>(res0, [](addrinfo* p) {
45 auto socket::create_socket(
int domain,
int type,
int protocol) ->
bool {
46 m_sock_fd = ::socket(domain, type, protocol);
47 return m_sock_fd != -1;
50 auto socket::set_sockopts() ->
bool {
51 static constexpr int one = 1;
52 if(setsockopt(m_sock_fd, SOL_SOCKET, SO_REUSEADDR, &one,
sizeof(one))
@ error
Serious, critical errors.
std::string ip_address
An IP addresses.
unsigned short port_number_t
Port number.