xtd 0.2.0
Loading...
Searching...
No Matches
ip_address.hpp
Go to the documentation of this file.
1
4#pragma once
6#include "../array.hpp"
7#include "../core_export.hpp"
8#include "../iequatable.hpp"
9#include "../object.hpp"
10#include "../types.hpp"
11#include "../string.hpp"
12#include <vector>
13
15namespace xtd {
17 namespace net {
19 namespace sockets {
20 class socket;
21 }
23
42 class core_export_ ip_address : public xtd::object, public xtd::iequatable<xtd::net::ip_address> {
43 public:
45
49 static const ip_address any;
52 static const ip_address broadcast;
55 static const ip_address ip_v6_any;
62 static const ip_address ip_v6_none;
65 static const ip_address loopback;
68 static const ip_address none;
70
72
79 explicit ip_address(xtd::uint32 address);
82 explicit ip_address(const xtd::array<xtd::byte>& address);
96 ip_address(xtd::byte quad_part_address1, xtd::byte quad_part_address2, xtd::byte quad_part_address3, xtd::byte quad_part_address4);
98
100 ip_address(ip_address&& ip_address) = default;
101 ip_address(const ip_address& ip_address) = default;
102 ip_address& operator =(const ip_address&) = default;
104
106
111
115 bool is_ip_v4_mapped_to_ip_v6() const noexcept;
116
119 bool is_ip_v6_link_local() const noexcept;
120
123 bool is_ip_v6_multicast() const noexcept;
124
127 bool is_ip_v6_site_local() const noexcept;
128
132 bool is_ip_v6_teredo() const noexcept;
133
143
145
150 bool equals(const object& obj) const noexcept override;
154 bool equals(const ip_address& other) const noexcept override;
155
159
162 xtd::size get_hash_code() const noexcept override;
163
167 ip_address map_to_ip_v4() const noexcept;
168
172 ip_address map_to_ip_v6() const noexcept;
173
176 xtd::string to_string() const noexcept override;
178
180
187 static double host_to_network_order(double host);
188
195
202
209
215 static float host_to_network_order(float host);
216
223
230
237
241 static bool is_loopback(const ip_address& address);
242
248 static double network_to_host_order(double network);
249
256
263
270
276 static float network_to_host_order(float network);
277
284
291
298
305 static ip_address parse(const xtd::string& str);
306
311 static bool try_parse(const xtd::string& str, ip_address& address) noexcept;
313
314 private:
315 friend xtd::net::sockets::socket;
316 static constexpr xtd::size number_of_numbers_ = 8;
317 ip_address(const xtd::array<xtd::uint16>& numbers, xtd::uint32 scope_id);
318 xtd::uint32 address_or_scope_id_ = 0;
319 xtd::array<xtd::uint16> numbers_ = xtd::array<xtd::uint16>(number_of_numbers_);
320 sockets::address_family address_family_ = sockets::address_family::inter_network;
321 };
322 }
323}
Contains xtd::net::sockets::address_family enum.
Contains xtd::array class.
Provides methods for creating, manipulating, searching, and sorting arrays, thereby serving as the ba...
Definition array.hpp:61
Defines a generalized method that a value type or class implements to create a type-specific method f...
Definition iequatable.hpp:22
xtd::string to_string() const noexcept override
Converts an Internet address to its standard notation.
static bool try_parse(const xtd::string &str, ip_address &address) noexcept
Determines whether a string is a valid IP address.
bool equals(const object &obj) const noexcept override
Determines whether the specified object is equal to the current object.
bool is_ip_v6_teredo() const noexcept
Gets whether the address is an IPv6 Teredo address.
xtd::size get_hash_code() const noexcept override
Serves as a hash function for a particular type.
ip_address(xtd::uint32 address)
Initializes a new instance of the xtd::net::ip_address class with the address specified as an uint32.
static const ip_address ip_v6_none
Provides an IP address that indicates that no network interface should be used. This field is constan...
Definition ip_address.hpp:62
static const ip_address any
Provides an IP address that indicates that the server must listen for client activity on all network ...
Definition ip_address.hpp:49
static const ip_address loopback
Provides the IP loopback address. This field is constant.
Definition ip_address.hpp:65
xtd::array< xtd::byte > get_address_bytes() const
Provides a copy of the IPAddress as an array of bytes.
ip_address(const xtd::array< xtd::byte > &address, xtd::uint32 scope_id)
Initializes a new instance of the xtd::net::ip_address class with the address specified as a byte arr...
static double network_to_host_order(double network)
Converts a Double value from network byte order to host byte order.
bool is_ip_v6_link_local() const noexcept
Gets whether the address is an IPv6 link local address.
ip_address()
Initializes a new instance of the xtd::net::ip_address.
bool is_ip_v6_multicast() const noexcept
Gets whether the address is an IPv6 multicast global address.
xtd::uint32 scope_id() const
Gets the IPv6 address scope identifier.
ip_address(xtd::byte quad_part_address1, xtd::byte quad_part_address2, xtd::byte quad_part_address3, xtd::byte quad_part_address4)
Initializes a new instance of the xtd::net::ip_address class with the address specified as a four Byt...
static const ip_address ip_v6_loopback
Provides the IP loopback address. This field is constant.
Definition ip_address.hpp:58
ip_address(const xtd::array< xtd::byte > &address)
Initializes a new instance of the xtd::net::ip_address class with the address specified as a byte arr...
static const ip_address broadcast
Provides the IP broadcast address. This field is constant.
Definition ip_address.hpp:52
static const ip_address ip_v6_any
The Socket::Bind method uses the cIPv6Any field to indicate that a Socket must listen for client acti...
Definition ip_address.hpp:55
static bool is_loopback(const ip_address &address)
Indicates whether the specified IP address is the loopback address.
static ip_address parse(const xtd::string &str)
Converts an IP address string to an xtd::net::ip_address instance.
static double host_to_network_order(double host)
Converts a Double value from host byte order to network byte order.
xtd::net::sockets::address_family address_family() const noexcept
Gets the address family of the IP address.
ip_address map_to_ip_v4() const noexcept
Maps the xtd::net::ip_address object to an IPv4 address.
ip_address map_to_ip_v6() const noexcept
Maps the xtd::net::ip_address object to an IPv6 address.
static const ip_address none
Provides an IP address that indicates that no network interface should be used. This field is constan...
Definition ip_address.hpp:68
bool is_ip_v4_mapped_to_ip_v6() const noexcept
Gets whether the IP address is an IPv4-mapped IPv6 address.
bool is_ip_v6_site_local() const noexcept
Gets whether the address is an IPv6 site local address.
Implements the Berkeley sockets interface.
Definition socket.hpp:77
Supports all classes in the xtd class hierarchy and provides low-level services to derived classes....
Definition object.hpp:44
Contains core_export_ keyword.
#define core_export_
Define shared library export.
Definition core_export.hpp:13
size_t size
Represents a size of any object in bytes.
Definition size.hpp:23
int32_t int32
Represents a 32-bit signed integer.
Definition int32.hpp:23
uint8_t byte
Represents a 8-bit unsigned integer.
Definition byte.hpp:23
int64_t int64
Represents a 64-bit signed integer.
Definition int64.hpp:23
int16_t int16
Represents a 16-bit signed integer.
Definition int16.hpp:23
uint16_t uint16
Represents a 16-bit unsigned integer.
Definition uint16.hpp:23
uint32_t uint32
Represents a 32-bit unsigned integer.
Definition uint32.hpp:23
uint64_t uint64
Represents a 64-bit unsigned integer.
Definition uint64.hpp:23
address_family
Specifies the addressing scheme that an instance of the xtd::net::sockets::socket class can use.
Definition address_family.hpp:30
@ host
The xtd::uri::host data.
Definition uri_components.hpp:23
@ other
The operating system is other.
Definition platform_id.hpp:58
Contains xtd::iequatable interface.
The xtd::net::sockets namespace provides a managed implementation of the Berkeley Sockets interface f...
Definition address_family.hpp:16
The xtd::net namespace provides a simple programming interface for many of the protocols used on netw...
Definition cookie_exception.hpp:11
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition abstract_object.hpp:8
Contains xtd::object class.
Contains xtd::string alias.
Contains xtd fundamental types.