mirror of
https://github.com/Relintai/sfw.git
synced 2024-12-20 21:06:49 +01:00
97 lines
1.9 KiB
C++
97 lines
1.9 KiB
C++
//Based on:
|
|
|
|
// Copyright 2010, Shuo Chen. All rights reserved.
|
|
// http://code.google.com/p/muduo/
|
|
//
|
|
// Use of this source code is governed by a BSD-style license
|
|
// that can be found in the License file.
|
|
|
|
// Author: Shuo Chen (chenshuo at chenshuo dot com)
|
|
//
|
|
// This is a public header file, it must only include public header files.
|
|
|
|
// Taken from Muduo and modified
|
|
// Copyright 2016, Tao An. All rights reserved.
|
|
// https://github.com/an-tao/trantor
|
|
//
|
|
// Use of this source code is governed by a BSD-style license
|
|
// that can be found in the License file.
|
|
|
|
// Author: Tao An
|
|
|
|
//--STRIP
|
|
#ifndef INET_ADDRESS_H
|
|
#define INET_ADDRESS_H
|
|
//--STRIP
|
|
|
|
//On windows link to ws2_32
|
|
|
|
//--STRIP
|
|
#include "int_types.h"
|
|
//--STRIP
|
|
|
|
#if defined(_WIN64) || defined(_WIN32)
|
|
using sa_family_t = unsigned short;
|
|
using in_addr_t = uint32_t;
|
|
using uint16_t = unsigned short;
|
|
#else
|
|
#include <arpa/inet.h>
|
|
#include <netinet/in.h>
|
|
#include <sys/socket.h>
|
|
#endif
|
|
|
|
//--STRIP
|
|
#include "core/ustring.h"
|
|
#include "int_types.h"
|
|
//--STRIP
|
|
|
|
struct sockaddr_in;
|
|
struct sockaddr_in6;
|
|
|
|
class InetAddress {
|
|
public:
|
|
struct InetAddressData;
|
|
|
|
sa_family_t family() const;
|
|
|
|
String to_ip() const;
|
|
String to_ip_port() const;
|
|
|
|
uint16_t to_port() const;
|
|
|
|
bool is_ip_v6() const;
|
|
bool is_intranet_ip() const;
|
|
bool is_loopback_ip() const;
|
|
|
|
const struct sockaddr *get_sock_addr() const;
|
|
|
|
void set_sock_addr_inet6(const struct sockaddr_in6 &addr6);
|
|
|
|
uint32_t ip_net_endian() const;
|
|
const uint32_t *ip6_net_endian() const;
|
|
|
|
uint16_t port_net_endian() const;
|
|
|
|
void set_port_net_endian(uint16_t port);
|
|
|
|
inline bool is_unspecified() const;
|
|
|
|
InetAddress(uint16_t port = 0, bool loopbackOnly = false, bool ipv6 = false);
|
|
InetAddress(const String &ip, uint16_t port, bool ipv6 = false);
|
|
|
|
explicit InetAddress(const struct sockaddr_in &addr);
|
|
explicit InetAddress(const struct sockaddr_in6 &addr);
|
|
|
|
~InetAddress();
|
|
|
|
private:
|
|
InetAddressData *_data;
|
|
|
|
bool _is_ip_v6;
|
|
bool _is_unspecified;
|
|
};
|
|
|
|
//--STRIP
|
|
#endif
|
|
//--STRIP
|