xtd 0.2.0
Loading...
Searching...
No Matches
ip_address.h
Go to the documentation of this file.
1
4#pragma once
6#include "../core_export.h"
7#include "../iequatable.h"
8#include "../object.h"
9#include "../types.h"
10#include "../ustring.h"
11#include <vector>
12
14namespace xtd {
16 namespace net {
18 namespace sockets {
19 class socket;
20 }
22
35 class core_export_ ip_address : public xtd::object, public xtd::iequatable<ip_address> {
36 public:
38
42 static const ip_address any;
45 static const ip_address broadcast;
48 static const ip_address ip_v6_any;
55 static const ip_address ip_v6_none;
58 static const ip_address loopback;
61 static const ip_address none;
63
65
69 ip_address() = default;
72 explicit ip_address(uint32 address);
75 explicit ip_address(const std::vector<xtd::byte>& address);
83 ip_address(const std::vector<xtd::byte>& address, uint32 scope_id);
89 ip_address(xtd::byte quad_part_address1, xtd::byte quad_part_address2, xtd::byte quad_part_address3, xtd::byte quad_part_address4);
91
93 ip_address(ip_address&& ip_address) = default;
94 ip_address(const ip_address& ip_address) = default;
95 ip_address& operator =(const ip_address&) = default;
97
99
104
108 bool is_ip_v4_mapped_to_ip_v6() const noexcept;
109
112 bool is_ip_v6_link_local() const noexcept;
113
116 bool is_ip_v6_multicast() const noexcept;
117
120 bool is_ip_v6_site_local() const noexcept;
121
125 bool is_ip_v6_teredo() const noexcept;
126
130 uint32 scope_id() const;
134 ip_address& scope_id(uint32 value);
136
138
140 bool equals(const ip_address& other) const noexcept override;
141
144 std::vector<xtd::byte> get_address_bytes() const;
145
149 ip_address map_to_ip_v4() const noexcept;
150
154 ip_address map_to_ip_v6() const noexcept;
155
158 ustring to_string() const noexcept override;
160
162
169 static double host_to_network_order(double host);
170
176 static int16 host_to_network_order(int16 host);
177
183 static int32 host_to_network_order(int32 host);
184
190 static int64 host_to_network_order(int64 host);
191
197 static float host_to_network_order(float host);
198
204 static uint16 host_to_network_order(uint16 host);
205
211 static uint32 host_to_network_order(uint32 host);
212
218 static uint64 host_to_network_order(uint64 host);
219
223 static bool is_loopback(const ip_address& address);
224
230 static double network_to_host_order(double network);
231
237 static int16 network_to_host_order(int16 network);
238
244 static int32 network_to_host_order(int32 host);
245
251 static int64 network_to_host_order(int64 network);
252
258 static float network_to_host_order(float network);
259
265 static uint16 network_to_host_order(uint16 network);
266
272 static uint32 network_to_host_order(uint32 network);
273
279 static uint64 network_to_host_order(uint64 network);
280
287 static ip_address parse(const ustring& str);
288
293 static bool try_parse(const ustring& str, ip_address& address) noexcept;
295
296 private:
297 friend xtd::net::sockets::socket;
298 static constexpr size_t number_of_numbers_ = 8;
299 ip_address(const std::vector<uint16>& numbers, uint32 scope_id);
300 uint32 address_ = 0xFFFFFFFF;
301 std::vector<uint16> numbers_ = std::vector<uint16>(number_of_numbers_);
302 uint32 scope_id_ = 0;
303 sockets::address_family address_family_ = sockets::address_family::inter_network;
304 };
305 }
306}
Contains xtd::net::sockets::address_family enum.
Defines a generalized method that a value type or class implements to create a type-specific method f...
Definition iequatable.h:18
Provides an Internet Protocol (IP) address.
Definition ip_address.h:35
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.h:55
ip_address()=default
Initializes a new instance of the xtd::net::ip_address.
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.h:42
static const ip_address loopback
Provides the IP loopback address. This field is constant.
Definition ip_address.h:58
sockets::address_family address_family() const noexcept
Gets the address family of the IP address.
ip_address(uint32 address)
Initializes a new instance of the xtd::net::ip_address class with the address specified as an uint32.
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.h:51
static const ip_address broadcast
Provides the IP broadcast address. This field is constant.
Definition ip_address.h:45
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.h:48
ip_address(const std::vector< xtd::byte > &address)
Initializes a new instance of the xtd::net::ip_address class with the address specified as a byte arr...
ip_address(const std::vector< xtd::byte > &address, uint32 scope_id)
Initializes a new instance of the xtd::net::ip_address class with the address specified as a byte arr...
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.h:61
Supports all classes in the xtd class hierarchy and provides low-level services to derived classes....
Definition object.h:32
Represents text as a sequence of UTF-8 code units.
Definition ustring.h:47
#define core_export_
Define shared library export.
Definition core_export.h:13
int_least16_t int16
Represents a 16-bit signed integer.
Definition types.h:120
int_least64_t int64
Represents a 64-bit signed integer.
Definition types.h:142
uint_least16_t uint16
Represents a 16-bit unsigned integer.
Definition types.h:230
int_least32_t int32
Represents a 32-bit signed integer.
Definition types.h:131
uint_least64_t uint64
Represents a 64-bit unsigned integer.
Definition types.h:252
uint_least32_t uint32
Represents a 32-bit unsigned integer.
Definition types.h:241
uint_least8_t byte
Represents a 8-bit unsigned integer.
Definition types.h:41
address_family
Specifies the addressing scheme that an instance of the xtd::net::sockets::socket class can use.
Definition address_family.h:28
@ socket
Socket options apply to all sockets.
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition xtd_about_box.h:10