A base class wrapper for low-level network functions.
More...
#include <C_socket.hpp>
|
enum class | Types { UDP
, TCP
, TCP_LISTENER
, UNKNOWN
} |
| The possible types of sockets. More...
|
enum class | Errors {
ERR_NOERROR = 0
, ERR_SUCCESS = ERR_NOERROR
, ERR_DONE = ERR_NOERROR
, ERR_PARTIAL = 1
,
ERR_NOTREADY = 2
, ERR_DISCONNECTED = 3
, ERR_REFUSED = 4
, ERR_ALREADYCONNECTED = 5
,
ERR_ALREADYUSED = 6
, ERR_TOOMANYSOCKET = 7
, ERR_NOTINIT = 8
, ERR_INVALIDARGUMENT = 9
,
ERR_UNSUCCESS = 10
, ERR_UNKNOWN = ERR_UNSUCCESS
} |
| The error codes. More...
|
using | SocketDescriptor = int |
|
| Socket (Types type, IpAddress::Types addressType=IpAddress::Types::Ipv4) |
|
Types | g_type |
IpAddress::Types | g_addressType {IpAddress::Types::Ipv4} |
SocketDescriptor | g_socket |
bool | g_isBlocking |
A base class wrapper for low-level network functions.
◆ Errors
◆ Types
The possible types of sockets.
◆ close()
void fge::net::Socket::close |
( |
| ) |
|
◆ create()
virtual Errors fge::net::Socket::create |
( |
| ) |
|
|
pure virtual |
◆ getAdaptersInfo()
std::vector< AdapterInfo > fge::net::Socket::getAdaptersInfo |
( |
IpAddress::Types | type = IpAddress::Types::None | ) |
|
|
staticnodiscard |
Retrieve adapters information.
The information retrieved is the name, description, mtu and unicast addresses of the adapters.
- Parameters
-
type | The type of address to get, if None, all addresses will be returned |
- Returns
- A vector containing the adapters information or an empty vector
◆ getAddressType()
IpAddress::Types fge::net::Socket::getAddressType |
( |
| ) |
const |
|
inlinenodiscard |
Get the address type of the socket.
By default, the address type is Ipv4.
- Returns
- The address type of the socket (Ipv4 or Ipv6)
◆ getLocalAddress()
IpAddress fge::net::Socket::getLocalAddress |
( |
| ) |
const |
|
nodiscard |
Get the local address of the socket.
From MSDN: This function provide the only way to determine the local association that has been set by the system.
- Returns
- The local address of the socket or IpAddress::None if there was an error
◆ getLocalPort()
Port fge::net::Socket::getLocalPort |
( |
| ) |
const |
|
nodiscard |
Get the local port of the socket.
From MSDN: This function provide the only way to determine the local association that has been set by the system.
- Returns
- The local port of the socket or 0 if there was an error
◆ getPlatformSpecifiedError()
int fge::net::Socket::getPlatformSpecifiedError |
( |
| ) |
|
|
staticnodiscard |
Get the last platform specific error code.
- Returns
- The last platform specific error code
◆ getRemoteAddress()
IpAddress fge::net::Socket::getRemoteAddress |
( |
| ) |
const |
|
nodiscard |
Get the remote address of the socket.
From MSDN: For datagram sockets, only the address of a peer specified in a previous connect call will be returned. Any address specified by a previous sendto call will not be returned.
- Returns
- The remote address of the socket or IpAddress::None if there was an error
◆ getRemotePort()
Port fge::net::Socket::getRemotePort |
( |
| ) |
const |
|
nodiscard |
Get the remote port of the socket.
From MSDN: For datagram sockets, only the address of a peer specified in a previous connect call will be returned. Any address specified by a previous sendto call will not be returned.
- Returns
- The remote port of the socket or 0 if there was an error
◆ getType()
Types fge::net::Socket::getType |
( |
| ) |
const |
|
inlinenodiscard |
Get the type of the socket.
Type can be one of the type defined in the Socket::Type enum
- Returns
- The type of the socket
◆ initSocket()
bool fge::net::Socket::initSocket |
( |
| ) |
|
|
static |
Init the low-level socket library.
This call WSAStartup() on Windows and nothing on other platforms
- Returns
- true if successful, false otherwise
◆ isBlocking()
bool fge::net::Socket::isBlocking |
( |
| ) |
const |
|
nodiscard |
Check if the socket is in blocking mode.
- Returns
- true if the socket is in blocking mode, false otherwise
◆ isValid()
bool fge::net::Socket::isValid |
( |
| ) |
const |
|
nodiscard |
Check if the socket is valid.
The socket is valid if it has been created and not closed
- Returns
- true if the socket is valid, false otherwise
◆ retrieveCurrentAdapterMTU()
std::optional< uint16_t > fge::net::Socket::retrieveCurrentAdapterMTU |
( |
| ) |
const |
|
nodiscard |
Retrieve the current adapter MTU.
From MSDN: This function get all the adapter addresses and compare the local address with the current local address in order to find the adapter that is currently used.
From a connection-less socket, this function can only work if the socket is connected to a remote address or/and if I/O operations have been performed.
- Returns
- The current adapter MTU or std::nullopt if an error occurred
◆ select()
Errors fge::net::Socket::select |
( |
bool | read, |
|
|
uint32_t | timeoutms ) |
Check the socket for readability or writability.
From MSDN: The select function allows an application to determine the status of a socket.
If timeout is 0, the function returns immediately (polling).
- Parameters
-
read | true if the socket should be checked for readability, false otherwise |
timeoutms | The timeout in milliseconds |
- Returns
- Errors::ERR_NOERROR if the socket is ready, otherwise an error code
◆ setAddressType()
void fge::net::Socket::setAddressType |
( |
IpAddress::Types | type | ) |
|
Set the address type of the socket.
When the address type is changed, the socket is closed and recreated.
- Parameters
-
type | The address type of the socket (Ipv4 or Ipv6) |
◆ setBlocking()
Errors fge::net::Socket::setBlocking |
( |
bool | mode | ) |
|
Set the blocking mode of the socket.
- Parameters
-
mode | The blocking mode to set |
- Returns
- Error::ERR_NOERROR if successful, otherwise an error code
◆ setBroadcastOption()
Errors fge::net::Socket::setBroadcastOption |
( |
bool | mode | ) |
|
Set if the socket support broadcast.
From MSDN: The SO_BROADCAST socket option enables the socket to send and receive broadcast messages.
- Parameters
-
mode | The broadcast mode to set |
- Returns
- Errors::ERR_NOERROR if successful, otherwise an error code
◆ setDontFragment()
Errors fge::net::Socket::setDontFragment |
( |
bool | mode | ) |
|
Set if the socket should append DF flag to the packet.
From MSDN: (IP_DONTFRAGMENT) Indicates that data should not be fragmented regardless of the local MTU. Valid only for message oriented protocols. Microsoft TCP/IP providers respect this option for UDP and ICMP.
Note that on GNU/Linux, this option is IP_MTU_DISCOVER with IP_PMTUDISC_DO and IP_PMTUDISC_DONT flags.
- Parameters
-
mode | If the socket should append the DF flag |
- Returns
- Errors::ERR_NOERROR if successful, otherwise an error code
◆ setIpv6Only()
Errors fge::net::Socket::setIpv6Only |
( |
bool | mode | ) |
|
Set if ipv6 socket should only use ipv6.
From MSDN: The IPV6_V6ONLY socket option indicates if a socket created for the AF_INET6 address family is restricted to IPv6 communications only.
- Parameters
-
mode | The ipv6 only mode to set |
- Returns
- Errors::ERR_NOERROR if successful, otherwise an error code
◆ setReuseAddress()
Errors fge::net::Socket::setReuseAddress |
( |
bool | mode | ) |
|
Set if the socket reuse the address.
From MSDN: The SO_REUSEADDR socket option allows the application to bind to an address that is already in use.
- Parameters
-
mode | The reuse mode to set |
- Returns
- Error::ERR_NOERROR if successful, otherwise an error code
◆ uninitSocket()
void fge::net::Socket::uninitSocket |
( |
| ) |
|
|
static |
Shutdown the low-level socket library.
The documentation for this class was generated from the following file: