57 lines
1.2 KiB
C++
57 lines
1.2 KiB
C++
#ifndef NETWORK_IPADDRESS_H_
|
|
#define NETWORK_IPADDRESS_H_
|
|
|
|
#include <string>
|
|
#include <iosfwd>
|
|
#include <vector>
|
|
|
|
namespace td {
|
|
namespace network {
|
|
|
|
/* IPv4 address */
|
|
class IPAddress {
|
|
private:
|
|
std::uint32_t m_Address;
|
|
bool m_Valid;
|
|
|
|
public:
|
|
/* Create an invalid address */
|
|
IPAddress() noexcept;
|
|
|
|
/* Initialize by string IP */
|
|
IPAddress(const std::string& str);
|
|
|
|
/* Initialize by string IP */
|
|
IPAddress(const std::wstring& str);
|
|
|
|
/* Initialize by octets */
|
|
IPAddress(std::uint8_t octet1, std::uint8_t octet2, std::uint8_t octet3, std::uint8_t octet4) noexcept;
|
|
|
|
/* Get the specific octet. 1-4 */
|
|
std::uint8_t GetOctet(std::uint8_t num) const;
|
|
|
|
/* Set the specific octet. 1-4 */
|
|
void SetOctet(std::uint8_t num, std::uint8_t value);
|
|
|
|
/* Make sure the IP is valid. It will be invalid if the host wasn't found. */
|
|
bool IsValid() const noexcept { return m_Valid; }
|
|
|
|
std::string ToString() const;
|
|
|
|
static IPAddress LocalAddress();
|
|
|
|
bool operator==(const IPAddress& right);
|
|
bool operator!=(const IPAddress& right);
|
|
bool operator==(bool b);
|
|
};
|
|
|
|
typedef std::vector<IPAddress> IPAddresses;
|
|
|
|
std::ostream& operator<<(std::ostream& os, const IPAddress& addr);
|
|
std::wostream& operator<<(std::wostream& os, const IPAddress& addr);
|
|
|
|
} // ns network
|
|
} // ns td
|
|
|
|
#endif
|