xtd 0.2.0
Loading...
Searching...
No Matches
socket.h
Go to the documentation of this file.
1
4#pragma once
5#include "address_family.h"
6#include "io_control_code.h"
9#include "linger_option.h"
10#include "multicast_option.h"
12#include "protocol_type.h"
13#include "select_mode.h"
14#include "socket_error.h"
15#include "socket_flags.h"
16#include "socket_information.h"
17#include "socket_option_level.h"
18#include "socket_option_name.h"
19#include "socket_shutdown.h"
20#include "socket_type.h"
21#include "../end_point.h"
22#include "../ip_address.h"
23#include "../../threading/manual_reset_event.h"
24#include "../../core_export.h"
25#include "../../argument_exception.h"
26#include "../../async_callback.h"
27#include "../../iasync_result.h"
28#include "../../iequatable.h"
29#include "../../not_implemented_exception.h"
30#include "../../not_supported_exception.h"
31#include "../../object.h"
32#include "../../types.h"
33#include "../../ustring.h"
34#include <memory>
35
37namespace xtd {
39 namespace net {
41 namespace sockets {
43 class socket_async_event_args;
45
71 class core_export_ socket : public xtd::object, public xtd::iequatable<socket> {
73 class async_result_socket : public xtd::object, public xtd::iasync_result {
74 public:
75 explicit async_result_socket(std::any async_state) : async_state_(async_state) {}
76 std::any async_state() const noexcept override {return async_state_;}
77 xtd::threading::wait_handle& async_wait_handle() noexcept override {return async_event_;}
78 bool completed_synchronously() const noexcept override {return false;}
79 bool is_completed() const noexcept override {return is_completed_;};
80
81 std::any async_state_;
82 bool is_completed_ = false;
85 std::exception_ptr exception_;
86 };
87
89 class async_result_accept : public async_result_socket {
90 public:
91 explicit async_result_accept(std::any async_state) : async_result_socket(async_state) {}
92 std::any socket_;
93 };
94
96 class async_result_connect : public async_result_socket {
97 public:
98 explicit async_result_connect(std::any async_state) : async_result_socket(async_state) {}
99 };
100
102 class async_result_disconnect : public async_result_socket {
103 public:
104 explicit async_result_disconnect(std::any async_state) : async_result_socket(async_state) {}
105 };
106
108 class async_result_receive : public async_result_socket {
109 public:
110 explicit async_result_receive(std::any async_state) : async_result_socket(async_state) {}
111 size_t number_of_bytes_received_ = 0;
112 };
113
115 class async_result_receive_from : public async_result_socket {
116 public:
117 explicit async_result_receive_from(std::any async_state) : async_result_socket(async_state) {}
118 std::shared_ptr<xtd::net::end_point> end_point_;
119 size_t number_of_bytes_received_ = 0;
120 };
121
123 class async_result_receive_message_from : public async_result_socket {
124 public:
125 explicit async_result_receive_message_from(std::any async_state) : async_result_socket(async_state) {}
126 std::shared_ptr<xtd::net::end_point> end_point_;
128 size_t number_of_bytes_received_ = 0;
129 xtd::net::sockets::ip_packet_information ip_packet_information_;
130 };
131
133 class async_result_send : public async_result_socket {
134 public:
135 explicit async_result_send(std::any async_state) : async_result_socket(async_state) {}
136 size_t number_of_bytes_sent_ = 0;
137 };
138
140 class async_result_send_to : public async_result_socket {
141 public:
142 explicit async_result_send_to(std::any async_state) : async_result_socket(async_state) {}
143 size_t number_of_bytes_sent_ = 0;
144 };
145
146 struct data;
147
148 public:
150
154
159 explicit socket(intptr handle);
180
182 socket(socket&&) = default;
183 socket(const socket&) = default;
184 ~socket();
185 socket& operator =(const socket&) = default;
187
189
195
200 size_t available() const;
201
209 bool blocking() const;
218 socket& blocking(bool value);
219
225 bool connected() const noexcept;
226
233 bool dont_fragment() const;
241 socket& dont_fragment(bool value);
242
249 bool dual_mode() const;
257 socket& dual_mode(bool value);
258
266 bool enable_broadcast() const;
275 socket& enable_broadcast(bool value);
276
285 bool exclusive_address_use() const;
296 socket& exclusive_address_use(bool value);
297
300 intptr handle() const noexcept;
301
305 bool is_bound() const noexcept;
306
324 xtd::net::sockets::linger_option linger_state() const;
343 socket& linger_state(const xtd::net::sockets::linger_option& value);
344
350 std::shared_ptr<xtd::net::end_point> local_end_point() const;
351
360 bool multicast_loopback() const;
370 socket& multicast_loopback(bool value);
371
380 bool no_delay() const;
390 socket& no_delay(bool value);
391
395 xtd::net::sockets::protocol_type protocol_type() const noexcept;
396
403 size_t receive_buffer_size() const;
411 socket& receive_buffer_size(size_t value);
412
419 int32 receive_timeout() const;
428 socket& receive_timeout(int32 value);
429
435 std::shared_ptr<xtd::net::end_point> remote_end_point() const;
436
443 size_t send_buffer_size() const;
451 socket& send_buffer_size(size_t value);
452
459 int32 send_timeout() const;
468 socket& send_timeout(int32 value);
469
473 xtd::net::sockets::socket_type socket_type() const noexcept;
474
484 xtd::byte ttl() const;
495 socket& ttl(xtd::byte value);
497
499
504 static bool os_supports_ip_v4() noexcept;
505
509 static bool os_supports_ip_v6() noexcept;
511
513
525 socket accept();
526
544 bool accept_async(xtd::net::sockets::socket_async_event_args& e);
545
560 std::shared_ptr<xtd::iasync_result> begin_accept(xtd::async_callback callback, const std::any& state);
561
577 template<typename end_point_t>
578 std::shared_ptr<xtd::iasync_result> begin_connect(const end_point_t& remote_end_point, xtd::async_callback callback, const std::any& state) {
579 return begin_connect_(std::make_shared<end_point_t>(remote_end_point), callback, state);
580 }
594 std::shared_ptr<xtd::iasync_result> begin_connect(const xtd::net::ip_address& address, uint16 port, xtd::async_callback callback, const std::any& state);
608 std::shared_ptr<xtd::iasync_result> begin_connect(const std::vector<xtd::net::ip_address>& addresses, uint16 port, xtd::async_callback callback, const std::any& state);
622 std::shared_ptr<xtd::iasync_result> begin_connect(const xtd::ustring& host, uint16 port, xtd::async_callback callback, const std::any& state);
623
634 std::shared_ptr<xtd::iasync_result> begin_disconnect(bool reuse_socket, xtd::async_callback callback, const std::any& state);
635
653 std::shared_ptr<xtd::iasync_result> begin_receive(std::vector<xtd::byte>& buffer, size_t offset, size_t size, xtd::net::sockets::socket_flags socket_flags, xtd::async_callback callback, const std::any& state);
672 std::shared_ptr<xtd::iasync_result> begin_receive(std::vector<xtd::byte>& buffer, size_t offset, size_t size, xtd::net::sockets::socket_flags socket_flags, xtd::net::sockets::socket_error& error_code, xtd::async_callback callback, const std::any& state);
673
696 std::shared_ptr<xtd::iasync_result> begin_receive_from(std::vector<xtd::byte>& buffer, size_t offset, size_t size, xtd::net::sockets::socket_flags socket_flags, xtd::net::end_point& remote_end_point, xtd::async_callback callback, const std::any& state);
697
715 std::shared_ptr<xtd::iasync_result> begin_receive_message_from(std::vector<xtd::byte>& buffer, size_t offset, size_t size, xtd::net::sockets::socket_flags socket_flags, xtd::net::end_point& remote_end_point, xtd::async_callback callback, const std::any& state);
716
737 std::shared_ptr<xtd::iasync_result> begin_send(const std::vector<xtd::byte>& buffer, size_t offset, size_t size, xtd::net::sockets::socket_flags socket_flags, xtd::async_callback callback, const std::any& state);
759 std::shared_ptr<xtd::iasync_result> begin_send(const std::vector<xtd::byte>& buffer, size_t offset, size_t size, xtd::net::sockets::socket_flags socket_flags, xtd::net::sockets::socket_error& error_code, xtd::async_callback callback, const std::any& state);
760
781 std::shared_ptr<xtd::iasync_result> begin_send_to(const std::vector<xtd::byte>& buffer, size_t offset, size_t size, xtd::net::sockets::socket_flags socket_flags, const xtd::net::end_point& remote_end_point, xtd::async_callback callback, const std::any& state);
782
794 template<typename end_point_t>
795 void bind(const end_point_t& local_end_point) {
796 bind_(std::make_shared<end_point_t>(local_end_point));
797 }
798
804 void close();
805
815 template<typename end_point_t>
816 void connect(const end_point_t& remote_end_point) {
817 connect_(std::make_shared<end_point_t>(remote_end_point));
818 }
819
830 void connect(const xtd::net::ip_address& address, uint16 port);
831
843 void connect(const std::vector<xtd::net::ip_address>& addresses, uint16 port);
844
855 void connect(const xtd::ustring& host, uint16 port);
856
865 void disconnect(bool reuse_socket);
866
876 socket end_accept(std::shared_ptr<xtd::iasync_result> async_result);
877
887 void end_connect(std::shared_ptr<xtd::iasync_result> async_result);
888
896 void end_disconnect(std::shared_ptr<xtd::iasync_result> async_result);
897
912 size_t end_receive(std::shared_ptr<xtd::iasync_result> async_result);
927 size_t end_receive(std::shared_ptr<xtd::iasync_result> async_result, xtd::net::sockets::socket_error& error_code);
928
940 size_t end_receive_from(std::shared_ptr<xtd::iasync_result> async_result, std::shared_ptr<xtd::net::end_point>& end_point);
941
956
971 size_t end_send(std::shared_ptr<xtd::iasync_result> async_result);
987 size_t end_send(std::shared_ptr<xtd::iasync_result> async_result, xtd::net::sockets::socket_error& error_code);
988
1000 size_t end_send_to(std::shared_ptr<xtd::iasync_result> async_result);
1001
1002 bool equals(const socket& s) const noexcept override;
1003
1012 size_t get_raw_socket_option(int32 socket_option_level, int32 socket_option_name, intptr option_value, size_t size_option_value) const;
1013
1047
1055 size_t io_control(int32 io_control_code, std::vector<xtd::byte>& option_in_value, std::vector<xtd::byte>& option_out_value);
1063 size_t io_control(xtd::net::sockets::io_control_code io_control_code, std::vector<xtd::byte>& option_in_value, std::vector<xtd::byte>& option_out_value);
1064
1073 void listen(size_t backlog);
1074
1083 void listen();
1084
1098 bool poll(int32 micro_seconds, xtd::net::sockets::select_mode mode);
1099
1112 size_t receive(std::vector<xtd::byte>& buffer);
1113
1127 size_t receive(std::vector<xtd::byte>& buffer, xtd::net::sockets::socket_flags socket_flags);
1128
1144 size_t receive(std::vector<xtd::byte>& buffer, size_t size, xtd::net::sockets::socket_flags socket_flags);
1145
1161 size_t receive(std::vector<xtd::byte>& buffer, size_t offset, size_t size, xtd::net::sockets::socket_flags socket_flags);
1162
1178 size_t receive(std::vector<xtd::byte>& buffer, size_t offset, size_t size, xtd::net::sockets::socket_flags socket_flags, xtd::net::sockets::socket_error& error);
1179
1195 size_t receive_from(std::vector<xtd::byte>& buffer, xtd::net::end_point& remote_end_point);
1196
1213 size_t receive_from(std::vector<xtd::byte>& buffer, xtd::net::sockets::socket_flags socket_flags, xtd::net::end_point& remote_end_point);
1214
1233 size_t receive_from(std::vector<xtd::byte>& buffer, size_t size, xtd::net::sockets::socket_flags socket_flags, xtd::net::end_point& remote_end_point);
1234
1253 size_t receive_from(std::vector<xtd::byte>& buffer, size_t offset, size_t size, xtd::net::sockets::socket_flags socket_flags, xtd::net::end_point& remote_end_point);
1254
1256
1269 size_t send(const std::vector<xtd::byte>& buffer);
1270
1284 size_t send(const std::vector<xtd::byte>& buffer, xtd::net::sockets::socket_flags socket_flags);
1285
1301 size_t send(const std::vector<xtd::byte>& buffer, size_t size, xtd::net::sockets::socket_flags socket_flags);
1302
1319 size_t send(const std::vector<xtd::byte>& buffer, size_t offset, size_t size, xtd::net::sockets::socket_flags socket_flags);
1320
1336 size_t send(const std::vector<xtd::byte>& buffer, size_t offset, size_t size, xtd::net::sockets::socket_flags socket_flags, xtd::net::sockets::socket_error& error_code);
1337
1350 size_t send_to(const std::vector<xtd::byte>& buffer, const xtd::net::end_point& remote_end_point);
1364 size_t send_to(const std::vector<xtd::byte>& buffer, xtd::net::sockets::socket_flags socket_flags, const xtd::net::end_point& remote_end_point);
1380 size_t send_to(const std::vector<xtd::byte>& buffer, size_t size, xtd::net::sockets::socket_flags socket_flags, const xtd::net::end_point& remote_end_point);
1397 size_t send_to(const std::vector<xtd::byte>& buffer, size_t offset, size_t size, xtd::net::sockets::socket_flags socket_flags, const xtd::net::end_point& remote_end_point);
1398
1411
1442
1504
1515 void set_raw_socket_option(int32 socket_option_level, int32 socket_option_name, intptr option_value, size_t option_value_size);
1516
1538
1540
1557 static size_t select(std::vector<socket>& check_read, std::vector<socket>& check_write, std::vector<socket>& check_error, int32 microseconds);
1559
1560 private:
1561 static xtd::net::sockets::socket_error get_last_error_();
1562 std::shared_ptr<xtd::iasync_result> begin_connect_(std::shared_ptr<xtd::net::end_point> remote_end_point, xtd::async_callback callback, const std::any& state);
1563 void bind_(std::shared_ptr<xtd::net::end_point> local_end_point);
1564 void connect_(std::shared_ptr<xtd::net::end_point> remote_end_point);
1565
1566 std::shared_ptr<data> data_;
1567 };
1568 }
1569 }
1570}
Contains xtd::net::sockets::address_family enum.
Represents the status of an asynchronous operation.
Definition iasync_result.h:22
Defines a generalized method that a value type or class implements to create a type-specific method f...
Definition iequatable.h:18
Identifies a network address. This is an abstract class.
Definition end_point.h:25
Provides an Internet Protocol (IP) address.
Definition ip_address.h:35
Gets the network interface information that is associated with a call to xtd::net::sockets::socket::r...
Definition ip_packet_information.h:34
Contains option values for joining an IPv6 multicast group.
Definition ip_v6_multicast_option.h:30
Specifies whether a xtd::net::sockets::socket will remain connected after a call to the xtd::net::soc...
Definition linger_option.h:32
Contains IPAddress values used to join and drop multicast groups.
Definition multicast_option.h:37
Represents an asynchronous socket operation.
Definition socket_async_event_args.h:52
Encapsulates the information that is necessary to duplicate a xtd::net::sockets::socket.
Definition socket_information.h:31
Implements the Berkeley sockets interface.
Definition socket.h:71
void set_raw_socket_option(int32 socket_option_level, int32 socket_option_name, intptr option_value, size_t option_value_size)
Sets a socket option value using platform-specific level and name identifiers.
socket(intptr handle)
Initializes a new instance of the xtd::net::sockets::socket class for the specified socket handle.
void connect(const std::vector< xtd::net::ip_address > &addresses, uint16 port)
Establishes a connection to a remote host. The host is specified by an array of IP addresses and a po...
void bind(const end_point_t &local_end_point)
Associates a xtd::net::sockets::socket with a local endpoint.
Definition socket.h:795
xtd::net::sockets::ip_v6_multicast_option get_socket_ip_v6_multicast_option(xtd::net::sockets::socket_option_name socket_option_name) const
Returns the multicast xtd::net::sockets::socket option, represented as xtd::net::sockets::ip_v6_multi...
size_t send(const std::vector< xtd::byte > &buffer)
Sends data to a connected xtd::net::sockets::socket.
void set_socket_option(xtd::net::sockets::socket_option_name socket_option_name, const xtd::net::sockets::multicast_option &option_value)
Sets the linger xtd::net::sockets::socket option to the specified integer value.
size_t send(const std::vector< xtd::byte > &buffer, xtd::net::sockets::socket_flags socket_flags)
Sends data to a connected xtd::net::sockets::socket using the specified xtd::net::sockets::socket_fla...
std::shared_ptr< xtd::iasync_result > begin_connect(const xtd::net::ip_address &address, uint16 port, xtd::async_callback callback, const std::any &state)
Begins an asynchronous request for a remote host connection. The host is specified by an xtd::net::ip...
xtd::net::sockets::multicast_option get_socket_multicast_option(xtd::net::sockets::socket_option_name socket_option_name) const
Returns the multicast xtd::net::sockets::socket option, represented as xtd::net::sockets::multicast_o...
size_t receive(std::vector< xtd::byte > &buffer, size_t offset, size_t size, xtd::net::sockets::socket_flags socket_flags, xtd::net::sockets::socket_error &error)
Receives the specified number of bytes from a bound xtd::net::sockets::socket into the specified offs...
socket(xtd::net::sockets::address_family address_family, xtd::net::sockets::socket_type socket_type, xtd::net::sockets::protocol_type protocol_type)
Initializes a new instance of the xtd::net::sockets::socket class using the specified address family,...
std::shared_ptr< xtd::iasync_result > begin_receive(std::vector< xtd::byte > &buffer, size_t offset, size_t size, xtd::net::sockets::socket_flags socket_flags, xtd::net::sockets::socket_error &error_code, xtd::async_callback callback, const std::any &state)
Begins to asynchronously receive data from a connected xtd::net::sockets::socket::socket.
size_t io_control(int32 io_control_code, std::vector< xtd::byte > &option_in_value, std::vector< xtd::byte > &option_out_value)
Sets low-level operating modes for the xtd::net::sockets::socket using numerical control codes.
std::shared_ptr< xtd::iasync_result > begin_send(const std::vector< xtd::byte > &buffer, size_t offset, size_t size, xtd::net::sockets::socket_flags socket_flags, xtd::async_callback callback, const std::any &state)
Sends data asynchronously to a connected xtd::net::sockets::socket::socket.
size_t receive_from(std::vector< xtd::byte > &buffer, size_t size, xtd::net::sockets::socket_flags socket_flags, xtd::net::end_point &remote_end_point)
Receives data from a bound xtd::net::sockets::socket into a receive buffer.
size_t receive(std::vector< xtd::byte > &buffer, size_t offset, size_t size, xtd::net::sockets::socket_flags socket_flags)
Receives the specified number of bytes from a bound xtd::net::sockets::socket into the specified offs...
int32 get_socket_option(xtd::net::sockets::socket_option_level socket_option_level, xtd::net::sockets::socket_option_name socket_option_name) const
Returns the value of a specified xtd::net::sockets::socket option, represented as integer.
bool poll(int32 micro_seconds, xtd::net::sockets::select_mode mode)
Determines the status of the xtd::net::sockets::socket.
static size_t select(std::vector< socket > &check_read, std::vector< socket > &check_write, std::vector< socket > &check_error, int32 microseconds)
Determines the status of one or more sockets.
size_t send(const std::vector< xtd::byte > &buffer, size_t size, xtd::net::sockets::socket_flags socket_flags)
Sends the specified number of bytes of data to a connected xtd::net::sockets::socket,...
void listen(size_t backlog)
Places a xtd::net::sockets::socket in a listening state.
void set_socket_option(xtd::net::sockets::socket_option_level socket_option_level, xtd::net::sockets::socket_option_name socket_option_name, bool option_value)
Sets the specified xtd::net::sockets::socket option to the specified integer value.
socket end_accept(std::shared_ptr< xtd::iasync_result > async_result)
Asynchronously accepts an incoming connection attempt and creates a new xtd::net::sockets::socket::so...
size_t receive(std::vector< xtd::byte > &buffer)
Receives data from a bound xtd::net::sockets::socket into a receive buffer.
size_t end_receive(std::shared_ptr< xtd::iasync_result > async_result, xtd::net::sockets::socket_error &error_code)
Ends a pending asynchronous read.
std::shared_ptr< xtd::iasync_result > begin_disconnect(bool reuse_socket, xtd::async_callback callback, const std::any &state)
Begins an asynchronous request to disconnect from a remote endpoint.
size_t receive(std::vector< xtd::byte > &buffer, size_t size, xtd::net::sockets::socket_flags socket_flags)
Receives the specified number of bytes of data from a bound xtd::net::sockets::socket into a receive ...
size_t end_receive(std::shared_ptr< xtd::iasync_result > async_result)
Ends a pending asynchronous read.
std::shared_ptr< xtd::iasync_result > begin_connect(const std::vector< xtd::net::ip_address > &addresses, uint16 port, xtd::async_callback callback, const std::any &state)
Begins an asynchronous request for a remote host connection. The host is specified by an xtd::net::ip...
void end_disconnect(std::shared_ptr< xtd::iasync_result > async_result)
Ends a pending asynchronous disconnect request.
size_t send_to(const std::vector< xtd::byte > &buffer, size_t size, xtd::net::sockets::socket_flags socket_flags, const xtd::net::end_point &remote_end_point)
Sends the specified number of bytes of data to the specified endpoint using the specified xtd::net::s...
size_t end_receive_message_from(std::shared_ptr< xtd::iasync_result > async_result, xtd::net::sockets::socket_flags &socket_flags, std::shared_ptr< xtd::net::end_point > &end_point, xtd::net::sockets::ip_packet_information &ip_packet_information)
Ends a pending asynchronous read from a specific endpoint. This method also reveals more information ...
xtd::net::sockets::address_family address_family() const noexcept
Gets the address family of the xtd::net::sockets::socket.
void shutdown(xtd::net::sockets::socket_shutdown how)
Disables sends and receives on a xtd::net::sockets::socket.
size_t send_to(const std::vector< xtd::byte > &buffer, xtd::net::sockets::socket_flags socket_flags, const xtd::net::end_point &remote_end_point)
Sends data to a specific endpoint using the specified xtd::net::sockets::socket_flags.
void set_socket_option(xtd::net::sockets::socket_option_name socket_option_name, const xtd::net::sockets::ip_v6_multicast_option &option_value)
Sets the linger xtd::net::sockets::socket option to the specified integer value.
std::shared_ptr< xtd::iasync_result > begin_receive_from(std::vector< xtd::byte > &buffer, size_t offset, size_t size, xtd::net::sockets::socket_flags socket_flags, xtd::net::end_point &remote_end_point, xtd::async_callback callback, const std::any &state)
Begins to asynchronously receive data from a specified network device.
void connect(const xtd::net::ip_address &address, uint16 port)
Establishes a connection to a remote host. The host is specified by an IP address and a port number.
size_t end_send(std::shared_ptr< xtd::iasync_result > async_result, xtd::net::sockets::socket_error &error_code)
Ends a pending asynchronous send.
void end_connect(std::shared_ptr< xtd::iasync_result > async_result)
Ends a pending asynchronous connection request.
void set_socket_option(xtd::net::sockets::socket_option_level socket_option_level, xtd::net::sockets::socket_option_name socket_option_name, int32 option_value)
Sets the specified xtd::net::sockets::socket option to the specified integer value.
size_t receive_from(std::vector< xtd::byte > &buffer, size_t offset, size_t size, xtd::net::sockets::socket_flags socket_flags, xtd::net::end_point &remote_end_point)
Receives data from a bound xtd::net::sockets::socket into a receive buffer.
void close()
Closes the xtd::net::sockets::socket connection and releases all associated resources.
std::shared_ptr< xtd::iasync_result > begin_receive_message_from(std::vector< xtd::byte > &buffer, size_t offset, size_t size, xtd::net::sockets::socket_flags socket_flags, xtd::net::end_point &remote_end_point, xtd::async_callback callback, const std::any &state)
Begins to asynchronously receive the specified number of bytes of data into the specified location of...
void connect(const end_point_t &remote_end_point)
Establishes a connection to a remote host.
Definition socket.h:816
xtd::net::sockets::linger_option get_socket_linger_option() const
Returns the linger xtd::net::sockets::socket option, represented as xtd::net::sockets::linger_option.
void disconnect(bool reuse_socket)
Closes the socket connection and allows reuse of the socket.
void set_socket_option(xtd::net::sockets::linger_option option_value)
Sets the linger xtd::net::sockets::socket option to the specified integer value.
socket(const xtd::net::sockets::socket_information &socket_information)
Initializes a new instance of the xtd::net::sockets::socket class using the specified value returned ...
size_t io_control(xtd::net::sockets::io_control_code io_control_code, std::vector< xtd::byte > &option_in_value, std::vector< xtd::byte > &option_out_value)
Sets low-level operating modes for the xtd::net::sockets::socket using xtd::net::sockets::io_control_...
size_t end_receive_from(std::shared_ptr< xtd::iasync_result > async_result, std::shared_ptr< xtd::net::end_point > &end_point)
Ends a pending asynchronous read from a specific endpoint.
size_t send(const std::vector< xtd::byte > &buffer, size_t offset, size_t size, xtd::net::sockets::socket_flags socket_flags, xtd::net::sockets::socket_error &error_code)
Sends the specified number of bytes of data to a connected xtd::net::sockets::socket,...
size_t get_raw_socket_option(int32 socket_option_level, int32 socket_option_name, intptr option_value, size_t size_option_value) const
Gets a socket option value using platform-specific level and name identifiers.
size_t send(const std::vector< xtd::byte > &buffer, size_t offset, size_t size, xtd::net::sockets::socket_flags socket_flags)
Sends the specified number of bytes of data to a connected xtd::net::sockets::socket,...
size_t receive_from(std::vector< xtd::byte > &buffer, xtd::net::end_point &remote_end_point)
Receives data from a bound xtd::net::sockets::socket into a receive buffer.
socket()
Initializes a new instance of the xtd::net::sockets::socket class.
std::shared_ptr< xtd::iasync_result > begin_send(const std::vector< xtd::byte > &buffer, size_t offset, size_t size, xtd::net::sockets::socket_flags socket_flags, xtd::net::sockets::socket_error &error_code, xtd::async_callback callback, const std::any &state)
Sends data asynchronously to a connected xtd::net::sockets::socket::socket.
std::shared_ptr< xtd::iasync_result > begin_receive(std::vector< xtd::byte > &buffer, size_t offset, size_t size, xtd::net::sockets::socket_flags socket_flags, xtd::async_callback callback, const std::any &state)
Begins to asynchronously receive data from a connected xtd::net::sockets::socket::socket.
size_t receive(std::vector< xtd::byte > &buffer, xtd::net::sockets::socket_flags socket_flags)
Receives data from a bound xtd::net::sockets::socket into a receive buffer, using the specified xtd::...
void listen()
Places a xtd::net::sockets::socket in a listening state.
size_t send_to(const std::vector< xtd::byte > &buffer, size_t offset, size_t size, xtd::net::sockets::socket_flags socket_flags, const xtd::net::end_point &remote_end_point)
Sends the specified number of bytes of data to the specified endpoint, starting at the specified loca...
void connect(const xtd::ustring &host, uint16 port)
Establishes a connection to a remote host. The host is specified by a host name and a port number.
size_t receive_from(std::vector< xtd::byte > &buffer, xtd::net::sockets::socket_flags socket_flags, xtd::net::end_point &remote_end_point)
Receives data from a bound xtd::net::sockets::socket into a receive buffer.
std::shared_ptr< xtd::iasync_result > begin_connect(const xtd::ustring &host, uint16 port, xtd::async_callback callback, const std::any &state)
Begins an asynchronous request for a remote host connection. The host is specified by a host name and...
void set_ip_protection_level(xtd::net::sockets::ip_protection_level level)
Sets the IP protection level on a socket.
socket(xtd::net::sockets::socket_type socket_type, xtd::net::sockets::protocol_type protocol_type)
Initializes a new instance of the xtd::net::sockets::socket class using the specified socket type and...
std::shared_ptr< xtd::iasync_result > begin_send_to(const std::vector< xtd::byte > &buffer, size_t offset, size_t size, xtd::net::sockets::socket_flags socket_flags, const xtd::net::end_point &remote_end_point, xtd::async_callback callback, const std::any &state)
Sends data asynchronously to a specific remote host.
size_t send_to(const std::vector< xtd::byte > &buffer, const xtd::net::end_point &remote_end_point)
Sends data to the specified endpoint.
size_t end_send(std::shared_ptr< xtd::iasync_result > async_result)
Ends a pending asynchronous send.
size_t end_send_to(std::shared_ptr< xtd::iasync_result > async_result)
Ends a pending asynchronous send to a specific location.
Supports all classes in the xtd class hierarchy and provides low-level services to derived classes....
Definition object.h:32
Represents a thread synchronization event that, when signaled, must be reset manually....
Definition manual_reset_event.h:33
Encapsulates operating system specific objects that wait for exclusive access to shared resources.
Definition wait_handle.h:50
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
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
size_t size
Represents a size of any object in bytes.
Definition types.h:197
intmax_t intptr
Represent a pointer or a handle.
Definition types.h:153
socket_error
Defines error codes for the xtd::net::sockets::socket class.
Definition socket_error.h:28
std::shared_ptr< xtd::iasync_result > async_result
Represents the status of an asynchronous operation.
Definition async_result.h:16
delegate< void(async_result ar)> async_callback
References a method to be called when a corresponding asynchronous operation completes.
Definition delegate.h:34
address_family
Specifies the addressing scheme that an instance of the xtd::net::sockets::socket class can use.
Definition address_family.h:28
socket_option_level
Defines socket option levels for the xtd::net::sockets::socket::set_socket_option and xtd::net::socke...
Definition socket_option_level.h:29
socket_option_name
Defines configuration option names.
Definition socket_option_name.h:29
ip_protection_level
A value that enables restriction of an IPv6 socket to a specified scope, such as addresses with the s...
Definition ip_protection_level.h:29
protocol_type
Specifies the protocols that the xtd::net::sockets::socket class supports.
Definition protocol_type.h:28
socket_flags
Specifies socket send and receive behaviors. This enumeration has a flags attribute that allows a bit...
Definition socket_flags.h:28
select_mode
Defines the polling modes for the xtd::net::sockets::socket::poll method.
Definition select_mode.h:29
socket_type
Specifies the type of socket that an instance of the xtd::net::sockets::socket class represents.
Definition socket_type.h:30
socket_shutdown
Defines constants that are used by the xtd::net::sockets::socket::shutdown method.
Definition socket_shutdown.h:29
io_control_code
Specifies the IO control codes supported by the xtd::net::sockets::socket::io_control method.
Definition io_control_code.h:28
@ success
Operation successful.
@ receive_message_from
A socket receive_message_from operation.
@ none
Use no flags for this call.
Contains xtd::net::sockets::io_control_code enum.
Contains xtd::net::sockets::ip_packet_information class.
Contains xtd::net::sockets::ip_protection_level enum.
Contains xtd::net::sockets::ip_v6_multicast_option class.
Contains xtd::net::sockets::linger_option class.
Contains xtd::net::sockets::multicast_option class.
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition xtd_about_box.h:10
Contains xtd::net::sockets::protocol_type enum.
Contains xtd::net::sockets::select_mode enum.
Contains xtd::net::sockets::socket_error enum.
Contains xtd::net::sockets::socket_flags enum.
Contains xtd::net::sockets::socket_information class.
Contains xtd::net::sockets::socket_option_level enum.
Contains xtd::net::sockets::socket_option_name enum.
Contains xtd::net::sockets::socket_shutdown enum.
Contains xtd::net::sockets::socket_type enum.