xtd 0.2.0
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);
90 ip_address(const xtd::array<xtd::byte>& address, xtd::uint32 scope_id);
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
137 xtd::uint32 scope_id() const;
141 ip_address& scope_id(xtd::uint32 value);
143
145
150 bool equals(const object& obj) const noexcept override;
154 bool equals(const ip_address& other) const noexcept override;
155
158 xtd::array<xtd::byte> get_address_bytes() const;
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
194 static xtd::int16 host_to_network_order(xtd::int16 host);
195
201 static xtd::int32 host_to_network_order(xtd::int32 host);
202
208 static xtd::int64 host_to_network_order(xtd::int64 host);
209
215 static float host_to_network_order(float host);
216
222 static xtd::uint16 host_to_network_order(xtd::uint16 host);
223
229 static xtd::uint32 host_to_network_order(xtd::uint32 host);
230
236 static xtd::uint64 host_to_network_order(xtd::uint64 host);
237
241 static bool is_loopback(const ip_address& address);
242
248 static double network_to_host_order(double network);
249
255 static xtd::int16 network_to_host_order(xtd::int16 network);
256
262 static xtd::int32 network_to_host_order(xtd::int32 host);
263
269 static xtd::int64 network_to_host_order(xtd::int64 network);
270
276 static float network_to_host_order(float network);
277
283 static xtd::uint16 network_to_host_order(xtd::uint16 network);
284
290 static xtd::uint32 network_to_host_order(xtd::uint32 network);
291
297 static xtd::uint64 network_to_host_order(xtd::uint64 network);
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.
Provides methods for creating, manipulating, searching, and sorting arrays, thereby serving as the ba...
Definition array.hpp:59
Defines a generalized method that a value type or class implements to create a type-specific method f...
Definition iequatable.hpp:22
Provides an Internet Protocol (IP) address.
Definition ip_address.hpp:42
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
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...
ip_address()
Initializes a new instance of the xtd::net::ip_address.
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
xtd::net::sockets::address_family address_family() const noexcept
Gets the address family of the IP 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
Supports all classes in the xtd class hierarchy and provides low-level services to derived classes....
Definition object.hpp:44
@ socket
The socket is not valid.
#define core_export_
Define shared library export.
Definition core_export.hpp:13
int16_t int16
Represents a 16-bit signed integer.
Definition int16.hpp:23
int32_t int32
Represents a 32-bit signed integer.
Definition int32.hpp:23
int64_t int64
Represents a 64-bit signed integer.
Definition int64.hpp:23
uint32_t uint32
Represents a 32-bit unsigned integer.
Definition uint32.hpp:23
size_t size
Represents a size of any object in bytes.
Definition size.hpp:23
uint64_t uint64
Represents a 64-bit unsigned integer.
Definition uint64.hpp:23
uint8_t byte
Represents a 8-bit unsigned integer.
Definition byte.hpp:23
uint16_t uint16
Represents a 16-bit unsigned integer.
Definition uint16.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
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition xtd_about_box.hpp:10