xtd - Reference Guide  0.1.1
Modern c++17/20 framework to create console, GUI and unit test applications on Windows, macOS, Linux, iOS and android.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
socket.h
Go to the documentation of this file.
1 #pragma once
5 
6 #include <memory>
7 #include "../../core_export.h"
8 #include "../../argument_exception.h"
9 #include "../../async_callback.h"
10 #include "../../iasync_result.h"
11 #include "../../not_implemented_exception.h"
12 #include "../../not_supported_exception.h"
13 #include "../../object.h"
14 #include "../../types.h"
15 #include "../../ustring.h"
16 #include "../end_point.h"
17 #include "../ip_address.h"
18 #include "address_family.h"
19 #include "io_control_code.h"
20 #include "ip_packet_information.h"
21 #include "ip_protection_level.h"
22 #include "linger_option.h"
23 #include "multicast_option.h"
24 #include "ip_v6_multicast_option.h"
25 #include "protocol_type.h"
26 #include "select_mode.h"
27 #include "socket_error.h"
28 #include "socket_flags.h"
29 #include "socket_information.h"
30 #include "socket_option_level.h"
31 #include "socket_option_name.h"
32 #include "socket_shutdown.h"
33 #include "socket_type.h"
34 
36 namespace xtd {
38  namespace net {
40  namespace sockets {
42  class socket_async_event_args;
44 
63  class core_export_ socket : public xtd::object {
64  class async_result_socket : public xtd::object, public xtd::iasync_result {
65  public:
66  async_result_socket(std::any async_state) : async_state_(async_state) {}
67  std::any async_state() const noexcept override {return async_state_;}
68  std::shared_mutex& async_mutex() override {return async_mutex_;}
69  bool completed_synchronously() const noexcept override {return false;}
70  bool is_completed() const noexcept override {return is_completed_;};
71 
72  std::any async_state_;
73  bool is_completed_ = false;
74  std::shared_mutex async_mutex_;
76  std::exception_ptr exception_;
77  };
78 
79  class async_result_accept : public async_result_socket {
80  public:
81  async_result_accept(std::any async_state) : async_result_socket(async_state) {}
82  std::any socket_;
83  };
84 
85  class async_result_connect : public async_result_socket {
86  public:
87  async_result_connect(std::any async_state) : async_result_socket(async_state) {}
88  };
89 
90  class async_result_disconnect : public async_result_socket {
91  public:
92  async_result_disconnect(std::any async_state) : async_result_socket(async_state) {}
93  };
94 
95  class async_result_receive : public async_result_socket {
96  public:
97  async_result_receive(std::any async_state) : async_result_socket(async_state) {}
98  size_t number_of_bytes_received_ = 0;
99  };
100 
101  class async_result_receive_from : public async_result_socket {
102  public:
103  async_result_receive_from(std::any async_state) : async_result_socket(async_state) {}
104  std::shared_ptr<xtd::net::end_point> end_point_;
105  size_t number_of_bytes_received_ = 0;
106  };
107 
108  class async_result_receive_message_from : public async_result_socket {
109  public:
110  async_result_receive_message_from(std::any async_state) : async_result_socket(async_state) {}
111  std::shared_ptr<xtd::net::end_point> end_point_;
112  xtd::net::sockets::socket_flags socket_flags_;
113  size_t number_of_bytes_received_ = 0;
114  xtd::net::sockets::ip_packet_information ip_packet_information_;
115  };
116 
117  class async_result_send : public async_result_socket {
118  public:
119  async_result_send(std::any async_state) : async_result_socket(async_state) {}
120  size_t number_of_bytes_sent_ = 0;
121  };
122 
123  class async_result_send_to : public async_result_socket {
124  public:
125  async_result_send_to(std::any async_state) : async_result_socket(async_state) {}
126  size_t number_of_bytes_sent_ = 0;
127  };
128 
129  public:
132 
137  socket(intptr_t handle);
157 
159  socket(socket&&) = default;
160  socket(const socket&) = default;
161  ~socket();
162  socket& operator=(const socket&) = default;
163  friend std::ostream& operator <<(std::ostream& os, const socket& mo) noexcept {return os << mo.to_string();}
164  bool operator==(const socket& s) const {return data_ == s.data_;};
165  bool operator!=(const socket& s) const {return !operator==(s);};
167 
172 
177  size_t available() const;
178 
186  bool blocking() const;
195  socket& blocking(bool value);
196 
202  bool connected() const noexcept;
203 
210  bool dont_fragment() const;
218  socket& dont_fragment(bool value);
219 
226  bool dual_mode() const;
234  socket& dual_mode(bool value);
235 
243  bool enable_broadcast() const;
252  socket& enable_broadcast(bool value);
253 
262  bool exclusive_address_use() const;
273  socket& exclusive_address_use(bool value);
274 
277  intptr_t handle() const noexcept;
278 
282  bool is_bound() const noexcept;
283 
301  xtd::net::sockets::linger_option linger_state() const;
320  socket& linger_state(const xtd::net::sockets::linger_option& value);
321 
327  std::shared_ptr<xtd::net::end_point> local_end_point() const;
328 
337  bool multicast_loopback() const;
347  socket& multicast_loopback(bool value);
348 
357  bool no_delay() const;
367  socket& no_delay(bool value);
368 
372  static bool os_supports_ip_v4() noexcept;
373 
377  static bool os_supports_ip_v6() noexcept;
378 
382  xtd::net::sockets::protocol_type protocol_type() const noexcept;
383 
390  size_t receive_buffer_size() const;
398  socket& receive_buffer_size(size_t value);
399 
406  int32_t receive_timeout() const;
415  socket& receive_timeout(int32_t value);
416 
422  std::shared_ptr<xtd::net::end_point> remote_end_point() const;
423 
430  size_t send_buffer_size() const;
438  socket& send_buffer_size(size_t value);
439 
446  int32_t send_timeout() const;
455  socket& send_timeout(int32_t value);
456 
460  xtd::net::sockets::socket_type socket_type() const noexcept;
461 
471  byte_t ttl() const;
482  socket& ttl(byte_t value);
483 
494  socket accept();
495 
513  bool accept_async(xtd::net::sockets::socket_async_event_args& e);
514 
529  std::shared_ptr<xtd::iasync_result> begin_accept(xtd::async_callback callback, const std::any& state);
530 
546  template<typename end_point_t>
547  std::shared_ptr<xtd::iasync_result> begin_connect(const end_point_t& remote_end_point, xtd::async_callback callback, const std::any& state) {
548  return begin_connect_(std::make_shared<end_point_t>(remote_end_point), callback, state);
549  }
563  std::shared_ptr<xtd::iasync_result> begin_connect(const xtd::net::ip_address& address, uint16_t port, xtd::async_callback callback, const std::any& state);
577  std::shared_ptr<xtd::iasync_result> begin_connect(const std::vector<xtd::net::ip_address>& addresses, uint16_t port, xtd::async_callback callback, const std::any& state);
591  std::shared_ptr<xtd::iasync_result> begin_connect(const xtd::ustring& host, uint16_t port, xtd::async_callback callback, const std::any& state);
592 
603  std::shared_ptr<xtd::iasync_result> begin_disconnect(bool reuse_socket, xtd::async_callback callback, const std::any& state);
604 
622  std::shared_ptr<xtd::iasync_result> begin_receive(std::vector<byte_t>& buffer, size_t offset, size_t size, xtd::net::sockets::socket_flags socket_flags, xtd::async_callback callback, const std::any& state);
641  std::shared_ptr<xtd::iasync_result> begin_receive(std::vector<byte_t>& 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);
642 
665  std::shared_ptr<xtd::iasync_result> begin_receive_from(std::vector<byte_t>& 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);
666 
684  std::shared_ptr<xtd::iasync_result> begin_receive_message_from(std::vector<byte_t>& 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);
685 
706  std::shared_ptr<xtd::iasync_result> begin_send(const std::vector<byte_t>& buffer, size_t offset, size_t size, xtd::net::sockets::socket_flags socket_flags, xtd::async_callback callback, const std::any& state);
728  std::shared_ptr<xtd::iasync_result> begin_send(const std::vector<byte_t>& 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);
729 
750  std::shared_ptr<xtd::iasync_result> begin_send_to(const std::vector<byte_t>& 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);
751 
763  template<typename end_point_t>
764  void bind(const end_point_t& local_end_point) {
765  bind_(std::make_shared<end_point_t>(local_end_point));
766  }
767 
773  void close();
774 
784  template<typename end_point_t>
785  void connect(const end_point_t& remote_end_point) {
786  connect_(std::make_shared<end_point_t>(remote_end_point));
787  }
788 
799  void connect(const xtd::net::ip_address& address, uint16_t port);
800 
812  void connect(const std::vector<xtd::net::ip_address>& addresses, uint16_t port);
813 
824  void connect(const xtd::ustring& host, uint16_t port);
825 
834  void disconnect(bool reuse_socket);
835 
845  socket end_accept(std::shared_ptr<xtd::iasync_result> async_result);
846 
856  void end_connect(std::shared_ptr<xtd::iasync_result> async_result);
857 
865  void end_disconnect(std::shared_ptr<xtd::iasync_result> async_result);
866 
881  size_t end_receive(std::shared_ptr<xtd::iasync_result> async_result);
896  size_t end_receive(std::shared_ptr<xtd::iasync_result> async_result, xtd::net::sockets::socket_error& error_code);
897 
909  size_t end_receive_from(std::shared_ptr<xtd::iasync_result> async_result, std::shared_ptr<xtd::net::end_point>& end_point);
910 
924  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);
925 
940  size_t end_send(std::shared_ptr<xtd::iasync_result> async_result);
956  size_t end_send(std::shared_ptr<xtd::iasync_result> async_result, xtd::net::sockets::socket_error& error_code);
957 
969  size_t end_send_to(std::shared_ptr<xtd::iasync_result> async_result);
970 
979  size_t get_raw_socket_option(int32_t socket_option_level, int32_t socket_option_name, intptr_t option_value, size_t size_option_value) const;
980 
1014 
1022  size_t io_control(int32_t io_control_code, std::vector<uint8_t>& option_in_value, std::vector<uint8_t>& option_out_value);
1030  size_t io_control(xtd::net::sockets::io_control_code io_control_code, std::vector<uint8_t>& option_in_value, std::vector<uint8_t>& option_out_value);
1031 
1040  void listen(size_t backlog);
1041 
1050  void listen();
1051 
1065  bool poll(int32_t micro_seconds, xtd::net::sockets::select_mode mode);
1066 
1079  size_t receive(std::vector<byte_t>& buffer);
1080 
1094  size_t receive(std::vector<byte_t>& buffer, xtd::net::sockets::socket_flags socket_flags);
1095 
1111  size_t receive(std::vector<byte_t>& buffer, size_t size, xtd::net::sockets::socket_flags socket_flags);
1112 
1128  size_t receive(std::vector<byte_t>& buffer, size_t offset, size_t size, xtd::net::sockets::socket_flags socket_flags);
1129 
1145  size_t receive(std::vector<byte_t>& buffer, size_t offset, size_t size, xtd::net::sockets::socket_flags socket_flags, xtd::net::sockets::socket_error& error);
1146 
1162  size_t receive_from(std::vector<byte_t>& buffer, xtd::net::end_point& remote_end_point);
1163 
1180  size_t receive_from(std::vector<byte_t>& buffer, xtd::net::sockets::socket_flags socket_flags, xtd::net::end_point& remote_end_point);
1181 
1200  size_t receive_from(std::vector<byte_t>& buffer, size_t size, xtd::net::sockets::socket_flags socket_flags, xtd::net::end_point& remote_end_point);
1201 
1220  size_t receive_from(std::vector<byte_t>& buffer, size_t offset, size_t size, xtd::net::sockets::socket_flags socket_flags, xtd::net::end_point& remote_end_point);
1221 
1223 
1239  static size_t select(std::vector<socket>& check_read,std::vector<socket>& check_write, std::vector<socket>& check_error, int32_t microseconds);
1240 
1253  size_t send(const std::vector<byte_t>& buffer);
1254 
1268  size_t send(const std::vector<byte_t>& buffer, xtd::net::sockets::socket_flags socket_flags);
1269 
1285  size_t send(const std::vector<byte_t>& buffer, size_t size, xtd::net::sockets::socket_flags socket_flags);
1286 
1303  size_t send(const std::vector<byte_t>& buffer, size_t offset, size_t size, xtd::net::sockets::socket_flags socket_flags);
1304 
1320  size_t send(const std::vector<byte_t>& buffer, size_t offset, size_t size, xtd::net::sockets::socket_flags socket_flags, xtd::net::sockets::socket_error& error_code);
1321 
1334  size_t send_to(const std::vector<byte_t>& buffer, const xtd::net::end_point& remote_end_point);
1348  size_t send_to(const std::vector<byte_t>& buffer, xtd::net::sockets::socket_flags socket_flags, const xtd::net::end_point& remote_end_point);
1364  size_t send_to(const std::vector<byte_t>& buffer, size_t size, xtd::net::sockets::socket_flags socket_flags, const xtd::net::end_point& remote_end_point);
1381  size_t send_to(const std::vector<byte_t>& buffer, size_t offset, size_t size, xtd::net::sockets::socket_flags socket_flags, const xtd::net::end_point& remote_end_point);
1382 
1395 
1426 
1488 
1499  void set_raw_socket_option(int32_t socket_option_level, int32_t socket_option_name, intptr_t option_value, size_t option_value_size);
1500 
1521 
1522  private:
1523  static xtd::net::sockets::socket_error get_last_error_();
1524  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);
1525  void bind_(std::shared_ptr<xtd::net::end_point> local_end_point);
1526  void connect_(std::shared_ptr<xtd::net::end_point> remote_end_point);
1527  struct data;
1528 
1529  std::shared_ptr<data> data_;
1530  };
1531  }
1532  }
1533 }
Contains xtd::net::sockets::address_family enum.
Represents the status of an asynchronous operation.
Definition: iasync_result.h:21
Identifies a network address. This is an abstract class.
Definition: end_point.h:24
Provides an Internet Protocol (IP) address.
Definition: ip_address.h:30
Gets the network interface information that is associated with a call to xtd::net::sockets::socket::r...
Definition: ip_packet_information.h:28
Contains option values for joining an IPv6 multicast group.
Definition: ip_v6_multicast_option.h:24
Specifies whether a xtd::net::sockets::socket will remain connected after a call to the xtd::net::soc...
Definition: linger_option.h:26
Contains IPAddress values used to join and drop multicast groups.
Definition: multicast_option.h:31
Represents an asynchronous socket operation.
Definition: socket_async_event_args.h:46
Encapsulates the information that is necessary to duplicate a xtd::net::sockets::socket.
Definition: socket_information.h:25
Implements the Berkeley sockets interface.
Definition: socket.h:63
void bind(const end_point_t &local_end_point)
Associates a xtd::net::sockets::socket with a local endpoint.
Definition: socket.h:764
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...
std::shared_ptr< xtd::iasync_result > begin_connect(const xtd::ustring &host, uint16_t 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...
std::shared_ptr< xtd::iasync_result > begin_receive_from(std::vector< byte_t > &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.
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 send(const std::vector< byte_t > &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,...
void set_socket_option(xtd::net::sockets::socket_option_level socket_option_level, xtd::net::sockets::socket_option_name socket_option_name, int32_t option_value)
Sets the specified xtd::net::sockets::socket option to the specified integer value.
size_t receive_from(std::vector< byte_t > &buffer, xtd::net::end_point &remote_end_point)
Receives data from a bound xtd::net::sockets::socket into a receive buffer.
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< byte_t > &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.
static size_t select(std::vector< socket > &check_read, std::vector< socket > &check_write, std::vector< socket > &check_error, int32_t microseconds)
Determines the status of one or more sockets.
size_t send(const std::vector< byte_t > &buffer)
Sends data to a connected xtd::net::sockets::socket.
size_t receive_from(std::vector< byte_t > &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_receive_message_from(std::vector< byte_t > &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...
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 io_control(xtd::net::sockets::io_control_code io_control_code, std::vector< uint8_t > &option_in_value, std::vector< uint8_t > &option_out_value)
Sets low-level operating modes for the xtd::net::sockets::socket using xtd::net::sockets::io_control_...
void set_raw_socket_option(int32_t socket_option_level, int32_t socket_option_name, intptr_t option_value, size_t option_value_size)
Sets a socket option value using platform-specific level and name identifiers.
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 end_receive(std::shared_ptr< xtd::iasync_result > async_result, xtd::net::sockets::socket_error &error_code)
Ends a pending asynchronous read.
size_t get_raw_socket_option(int32_t socket_option_level, int32_t socket_option_name, intptr_t 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< byte_t > &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...
size_t io_control(int32_t io_control_code, std::vector< uint8_t > &option_in_value, std::vector< uint8_t > &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< byte_t > &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_connect(const std::vector< xtd::net::ip_address > &addresses, uint16_t 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...
size_t end_receive(std::shared_ptr< xtd::iasync_result > async_result)
Ends a pending asynchronous read.
void end_disconnect(std::shared_ptr< xtd::iasync_result > async_result)
Ends a pending asynchronous disconnect request.
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 ...
int32_t 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.
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.
void connect(const std::vector< xtd::net::ip_address > &addresses, uint16_t port)
Establishes a connection to a remote host. The host is specified by an array of IP addresses and a po...
std::shared_ptr< xtd::iasync_result > begin_receive(std::vector< byte_t > &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 send(const std::vector< byte_t > &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 set_socket_option(xtd::net::sockets::socket_option_name socket_option_name, xtd::net::sockets::multicast_option option_value)
Sets the linger xtd::net::sockets::socket option to the specified integer value.
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 connect(const xtd::net::ip_address &address, uint16_t port)
Establishes a connection to a remote host. The host is specified by an IP address and a port number.
std::shared_ptr< xtd::iasync_result > begin_send_to(const std::vector< byte_t > &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 receive(std::vector< byte_t > &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...
size_t receive(std::vector< byte_t > &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 close()
Closes the xtd::net::sockets::socket connection and releases all associated resources.
void connect(const end_point_t &remote_end_point)
Establishes a connection to a remote host.
Definition: socket.h:785
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.
bool poll(int32_t micro_seconds, xtd::net::sockets::select_mode mode)
Determines the status of the xtd::net::sockets::socket.
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 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_to(const std::vector< byte_t > &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...
size_t receive(std::vector< byte_t > &buffer)
Receives data from a bound xtd::net::sockets::socket into a receive buffer.
std::shared_ptr< xtd::iasync_result > begin_connect(const xtd::net::ip_address &address, uint16_t 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...
size_t receive_from(std::vector< byte_t > &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.
std::shared_ptr< xtd::iasync_result > begin_send(const std::vector< byte_t > &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.
socket()
Initializes a new instance of the xtd::net::sockets::socket class.
void listen()
Places a xtd::net::sockets::socket in a listening state.
size_t send_to(const std::vector< byte_t > &buffer, const xtd::net::end_point &remote_end_point)
Sends data to the specified endpoint.
size_t send_to(const std::vector< byte_t > &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 connect(const xtd::ustring &host, uint16_t port)
Establishes a connection to a remote host. The host is specified by a host name and a port number.
void set_socket_option(xtd::net::sockets::socket_option_name socket_option_name, xtd::net::sockets::ip_v6_multicast_option option_value)
Sets the linger xtd::net::sockets::socket option to the specified integer value.
size_t receive(std::vector< byte_t > &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...
size_t receive_from(std::vector< byte_t > &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 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...
size_t send_to(const std::vector< byte_t > &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 receive(std::vector< byte_t > &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 ...
socket(intptr_t handle)
Initializes a new instance of the xtd::net::sockets::socket class for the specified socket handle.
size_t send(const std::vector< byte_t > &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 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:26
virtual xtd::ustring to_string() const noexcept
Returns a std::string that represents the current object.
Represents text as a sequence of UTF-8 code units.
Definition: ustring.h:48
#define core_export_
Define shared library export.
Definition: core_export.h:13
size_t size
Represents a size of any object in bytes.
Definition: types.h:171
socket_error
Defines error codes for the xtd::net::sockets::socket class.
Definition: socket_error.h:24
address_family
Specifies the addressing scheme that an instance of the xtd::net::sockets::socket class can use.
Definition: address_family.h:24
io_control_code
Specifies the IO control codes supported by the xtd::net::sockets::socket::io_control method.
Definition: io_control_code.h:24
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:25
delegate< void(std::shared_ptr< xtd::iasync_result > ar)> async_callback
References a method to be called when a corresponding asynchronous operation completes.
Definition: async_callback.h:18
socket_option_name
Defines configuration option names.
Definition: socket_option_name.h:25
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:25
protocol_type
Specifies the protocols that the xtd::net::sockets::socket class supports.
Definition: protocol_type.h:24
socket_flags
Specifies socket send and receive behaviors. This enumeration has a flags attribute that allows a bit...
Definition: socket_flags.h:24
select_mode
Defines the polling modes for the xtd::net::sockets::socket::poll method.
Definition: select_mode.h:25
socket_type
Specifies the type of socket that an instance of the xtd::net::sockets::socket class represents.
Definition: socket_type.h:26
socket_shutdown
Defines constants that are used by the xtd::net::sockets::socket::shutdown method.
Definition: socket_shutdown.h:25
@ success
Operation successful.
@ receive_message_from
A socket receive_message_from operation.
@ s
The S key.
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: system_report.h:17
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.