mn::net::basic_stream_ip_socket Class Reference

This class provides an interface to a tcp IPv4 socket. More...

#include <mn_basic_stream_ip_socket.hpp>

+ Inheritance diagram for mn::net::basic_stream_ip_socket:
+ Collaboration diagram for mn::net::basic_stream_ip_socket:

Public Types

using self_type = basic_stream_ip_socket
 
using base_type = basic_ip4_socket
 
using endpoint_type = typename base_type::endpoint_type
 
using ipaddress_type = typename base_type::ipaddress_type
 
using handle_type = typename base_type::handle_type
 
- Public Types inherited from mn::net::basic_ip4_socket
using handle_type = typename basic_ip_socket::handle_type
 
using endpoint_type = basic_ip4_endpoint
 
using ipaddress_type = basic_ip4_address
 
- Public Types inherited from mn::net::basic_ip_socket
using handle_type = int
 

Public Member Functions

 basic_stream_ip_socket ()
 
bool connect (endpoint_type remote_ep)
 Establishes a connection to the stream server at the given address. More...
 
bool listen (int backLog=8)
 Puts the socket into listening state. More...
 
self_typeaccept ()
 Gets the next completed connection from the socket's completed connection queue. More...
 
int recive (char *buffer, int size, socket_flags socketFlags=socket_flags::none)
 Receives data from the socket and stores it in buffer. Up to length bytes are received. More...
 
int recive (char *buffer, int offset, int size, socket_flags socketFlags)
 Receives data from the socket and stores it in buffer. Up to length bytes are received. More...
 
int send_bytes (const void *buffer, int size, socket_flags socketFlags=socket_flags::none)
 Sends the contents of the given buffer. More...
 
int send_bytes (const void *buffer, int offset, int size, socket_flags socketFlags=socket_flags::none)
 Sends the contents of the given buffer. More...
 
- Public Member Functions inherited from mn::net::basic_ip4_socket
 basic_ip4_socket (handle_type &hndl, endpoint_type *endp=nullptr) noexcept
 Construct the wrapper class from a given lwip socket handle and the endpoint. More...
 
 basic_ip4_socket (const socket_type &type, const protocol_type &protocol=protocol_type::unspec) noexcept
 Construct create a IPv4 Socket AF_INET. More...
 
 basic_ip4_socket (const basic_ip4_socket &other) noexcept
 a copy construtor More...
 
basic_ip4_socketoperator= (const basic_ip4_socket &other) noexcept
 a copy operator More...
 
bool bind (endpoint_type local_ep, bool reuseAddress=false, bool reusePort=false)
 Bind the socket on the given endpoint (ip and port) More...
 
bool bind (const unsigned int &port, bool reusePort=false)
 Bind the socket. More...
 
bool bind (ipaddress_type ip, const unsigned int &port, bool reuseAddress=false, bool reusePort=false)
 Bind the socket on the given ip and port. More...
 
endpoint_typeget_endpoint (bool local)
 Get the local or remote ip endpoint. More...
 
endpoint_typeget_local ()
 Get the local endpoint. More...
 
endpoint_typeget_remote ()
 Get the remote endpoint. More...
 
bool get_peername (endpoint_type &endpoint)
 Get the remote endpoint. More...
 
bool get_peername (ipaddress_type &ipPeerAddress, uint16_t &iPeerPort)
 Get the remote endpoint. More...
 
virtual basic_ip_socketget_copy ()
 Get a copy of this socket. More...
 
virtual void swap (basic_ip4_socket &rhs) noexcept
 
- Public Member Functions inherited from mn::net::basic_ip_socket
 basic_ip_socket (const handle_type &hndl) noexcept
 construtor from a raw handle More...
 
 basic_ip_socket (const address_family &fam, const socket_type &type, const protocol_type &protocol) noexcept
 construtor create the socket More...
 
 basic_ip_socket (const basic_ip_socket &other) noexcept
 copy construtor More...
 
virtual ~basic_ip_socket () noexcept
 deconstrutor, close the socket More...
 
virtual bool open ()
 Open the socket - only used when the socket not initialized. More...
 
virtual void close ()
 
virtual int available ()
 Returns the number of bytes available that can be read without causing the socket to block. More...
 
virtual void reset (const handle_type &hnd=MNTHREAD_NET_INVALID_SOCKET, bool bClosed=false)
 Reset the socket. More...
 
virtual bool initialized ()
 If the socket initialized. More...
 
int get_last_error (bool poolLast=true)
 Get the saved copy of the last lwip error code. More...
 
int get_handle ()
 Get the raw socket handle. More...
 
basic_ip_socketoperator= (const basic_ip_socket &other)
 
virtual void swap (basic_ip_socket &rhs) noexcept
 
void shutdown (const socket_shutdown_type &cmd)
 send shutdown More...
 
bool poll (const unsigned long &timeout, int mode)
 poll the socket More...
 
void set_reuse_address (bool flag)
 Set the option socket_option_name::reuse_addr. More...
 
void set_rause_port (bool flag)
 Set the option socket_option_name::reuse_port. More...
 
void set_linger (bool on, int seconds)
 Set the option socket_option_name::linger. More...
 
void set_no_delay (bool flag)
 Set the option socket_option_name::tcp_nodelay. More...
 
void set_keep_alive (bool flag)
 Set the option socket_option_name::keepalive. More...
 
void set_oob_inline (bool flag)
 Set the option socket_option_name::oob_inline. More...
 
void set_blocking (bool flag)
 Set the socket for bloking. More...
 
void set_nocheak (bool value)
 Set the option socket_option_name::no_check. More...
 
void set_send_buffer_size (int value)
 Set the size of the send buffer. More...
 
void set_recive_buffer_size (int value)
 Set the size of the recive buffer. More...
 
void set_send_timeout (int value)
 Set the option socket_option_name::send_timeout. More...
 
void set_recive_timeout (int value)
 Set the option socket_option_name::recive_timeout. More...
 
bool get_reuse_address ()
 Get the value of the option socket_option_name::reuse_addr. More...
 
bool get_rause_port ()
 Get the value of the option socket_option_name::reuse_port. More...
 
void get_linger (bool &on, int &seconds)
 Get the value of the option socket_option_name::linger. More...
 
bool get_no_delay ()
 Get the value of the option socket_option_name::no_delay. More...
 
bool get_keep_alive ()
 Get the value of the option socket_option_name::keepalive. More...
 
bool get_oob_inline ()
 Get the value of the option socket_option_name::oob_inline. More...
 
bool get_nocheak ()
 Get the value of the option socket_option_name::no_check. More...
 
bool get_blocking ()
 Is the socket blocking enabled. More...
 
int get_send_buffer_size ()
 Get the size of the send buffer. More...
 
int get_recive_buffer_size ()
 Get the size of the recive buffer. More...
 
int get_send_timeout ()
 Set the option socket_option_name::send_timeout. More...
 
int get_recive_timeout ()
 Set the option socket_option_name::recive_timeout. More...
 
int set_options (const socket_option_level &opt, const socket_option_name &name, int value)
 Sets the socket option specified by level and option to the given integer value. More...
 
int set_options (const socket_option_level &opt, const socket_option_name &name, unsigned int value)
 Sets the socket option specified by level and option to the given integer value. More...
 
int set_options (const socket_option_level &opt, const socket_option_name &name, basic_ip4_address value)
 Sets the socket option specified by level and option to the given integer value. More...
 
int set_options (const socket_option_level &opt, const socket_option_name &name, basic_ip6_address value)
 Sets the socket option specified by level and option to the given integer value. More...
 
int set_options (const socket_option_level &opt, const socket_option_name &name, bool value)
 Set a given option, version for boolen values. More...
 
int set_options (const socket_option_level &opt, const socket_option_name &name, void *value, uint32_t size)
 Set a given option, version for data. More...
 
int get_option_int (const socket_option_level &opt, const socket_option_name &name)
 Get a interger value of a given option. More...
 
bool get_option_bool (const socket_option_level &opt, const socket_option_name &name)
 Get a booles value of a given option. More...
 
int get_option_raw (const socket_option_level &opt, const socket_option_name &name, void *value, uint32_t size)
 Get a buffer value of a given option. More...
 
int ioctl (const ioctl_request_type &request, int &arg)
 A wrapper for the ioctl system call. More...
 
int ioctl (const ioctl_request_type &request, void *arg)
 A wrapper for the ioctl system call. More...
 
int set_fcntl (int arg)
 A wrapper for the fcntl system call. More...
 
int get_fcntl ()
 A wrapper for the fcntl system call. More...
 

Protected Member Functions

 basic_stream_ip_socket (handle_type &hndl, endpoint_type *endp=nullptr)
 
 basic_stream_ip_socket (const protocol_type &protocol)
 
- Protected Member Functions inherited from mn::net::basic_ip_socket
virtual bool open (const address_family &fam, const socket_type &type, const protocol_type &protocol)
 Open the socket - only used when the socket not initialized. More...
 

Additional Inherited Members

- Protected Attributes inherited from mn::net::basic_ip4_socket
endpoint_typem_pEndPoint
 A saved / cached copy of the endpoint on binde the socket. More...
 
- Protected Attributes inherited from mn::net::basic_ip_socket
handle_type m_iHandle
 Reference to the underlying socket handle for this socket. More...
 
address_family m_eFam
 A saved / cached copy of the address family type of this socket. More...
 
socket_type m_eType
 A saved / cached copy of the socket type of this socket. More...
 
protocol_type m_eProtocol
 A saved / cached copy of the protocal type of this socket. More...
 
bool m_bBlocked
 A saved / cached copy of a blocked flag. More...
 

Detailed Description

This class provides an interface to a tcp IPv4 socket.

Member Typedef Documentation

◆ base_type

◆ endpoint_type

◆ handle_type

◆ ipaddress_type

◆ self_type

Constructor & Destructor Documentation

◆ basic_stream_ip_socket() [1/3]

mn::net::basic_stream_ip_socket::basic_stream_ip_socket ( )
inline

◆ basic_stream_ip_socket() [2/3]

mn::net::basic_stream_ip_socket::basic_stream_ip_socket ( handle_type hndl,
endpoint_type endp = nullptr 
)
inlineprotected

◆ basic_stream_ip_socket() [3/3]

mn::net::basic_stream_ip_socket::basic_stream_ip_socket ( const protocol_type protocol)
inlineprotected

Member Function Documentation

◆ accept()

basic_stream_ip_socket::self_type * mn::net::basic_stream_ip_socket::accept ( )

Gets the next completed connection from the socket's completed connection queue.

Note
If the queue is empty, waits until a connection request completes.
Returns
A new basic_stream_ip_socket for the connection with the client.

◆ connect()

bool mn::net::basic_stream_ip_socket::connect ( endpoint_type  remote_ep)

Establishes a connection to the stream server at the given address.

Note
Can also be used for UDP sockets. In this case, no connection is established. Instead, incoming and outgoing packets are restricted to the specified address.
Parameters
remote_epThe adress to connect this socket
Returns
true on connecte and false on error

◆ listen()

bool mn::net::basic_stream_ip_socket::listen ( int  backLog = 8)

Puts the socket into listening state.

Parameters
backLogThe maximum number of connections that can be queued for this socket.
Returns
Return true when sucessfull put the socket in the listening state and false if not

◆ recive() [1/2]

int mn::net::basic_stream_ip_socket::recive ( char *  buffer,
int  offset,
int  size,
socket_flags  socketFlags 
)

Receives data from the socket and stores it in buffer. Up to length bytes are received.

Returns
Returns the number of bytes received.

◆ recive() [2/2]

int mn::net::basic_stream_ip_socket::recive ( char *  buffer,
int  size,
socket_flags  socketFlags = socket_flags::none 
)
inline

Receives data from the socket and stores it in buffer. Up to length bytes are received.

Returns
Returns the number of bytes received.

◆ send_bytes() [1/2]

int mn::net::basic_stream_ip_socket::send_bytes ( const void *  buffer,
int  offset,
int  size,
socket_flags  socketFlags = socket_flags::none 
)

Sends the contents of the given buffer.

Returns
Returns the number of bytes sent, which may be less than the number of bytes specified.
Parameters
bufferThe specific buffer to send
sizeThe size of the buffer
socketFlagsSocket sending optians
offsetbuffer+offset

◆ send_bytes() [2/2]

int mn::net::basic_stream_ip_socket::send_bytes ( const void *  buffer,
int  size,
socket_flags  socketFlags = socket_flags::none 
)

Sends the contents of the given buffer.

Returns
Returns the number of bytes sent, which may be less than the number of bytes specified.
Parameters
bufferThe specific buffer to send
sizeThe size of the buffer
socketFlagsSocket sending optians

The documentation for this class was generated from the following files: