![]() |
FastEngine 0.9.3
A multiplayer oriented 2D engine made with Vulkan.
|
A base class wrapper for low-level network functions. More...
#include <C_socket.hpp>
Public Types | |
enum | Type { TYPE_UDP , TYPE_TCP , TYPE_LISTENER_TCP } |
The possible types of sockets. More... | |
enum | Error { ERR_NOERROR = 0 , ERR_SUCCESS = ERR_NOERROR , ERR_DONE = ERR_NOERROR , ERR_PARTIAL , ERR_NOTREADY , ERR_DISCONNECTED , ERR_REFUSED , ERR_ALREADYCONNECTED , ERR_ALREADYUSED , ERR_TOOMANYSOCKET , ERR_NOTINIT , ERR_INVALIDARGUMENT , ERR_UNSUCCESS , ERR_UNKNOWN = ERR_UNSUCCESS } |
The error codes. More... | |
using | SocketDescriptor = int |
Public Member Functions | |
Type | getType () const |
Get the type of the socket. | |
IpAddress::Types | getAddressType () const |
Get the address type of the socket. | |
void | setAddressType (IpAddress::Types type) |
Set the address type of the socket. | |
virtual Error | create ()=0 |
Create a new socket. | |
void | close () |
Close the socket. | |
bool | isValid () const |
Check if the socket is valid. | |
fge::net::Port | getLocalPort () const |
Get the local port of the socket. | |
fge::net::IpAddress | getLocalAddress () const |
Get the local address of the socket. | |
fge::net::Port | getRemotePort () const |
Get the remote port of the socket. | |
fge::net::IpAddress | getRemoteAddress () const |
Get the remote address of the socket. | |
bool | isBlocking () const |
Check if the socket is in blocking mode. | |
Error | setBlocking (bool mode) |
Set the blocking mode of the socket. | |
Error | setReuseAddress (bool mode) |
Set if the socket reuse the address. | |
Error | setBroadcastOption (bool mode) |
Set if the socket support broadcast. | |
Error | select (bool read, uint32_t timeoutms) |
Check the socket for readability or writability. | |
fge::net::Socket & | operator= (fge::net::Socket const &r)=delete |
Socket (fge::net::Socket const &r)=delete | |
Static Public Member Functions | |
static bool | initSocket () |
Init the low-level socket library. | |
static void | uninitSocket () |
Shutdown the low-level socket library. | |
static int | getPlatformSpecifiedError () |
Get the last platform specific error code. | |
Protected Member Functions | |
Socket (Type type, IpAddress::Types addressType=IpAddress::Types::Ipv4) | |
Protected Attributes | |
Type | g_type |
IpAddress::Types | g_addressType {IpAddress::Types::Ipv4} |
SocketDescriptor | g_socket |
bool | g_isBlocking |
A base class wrapper for low-level network functions.
The error codes.
The possible types of sockets.
void fge::net::Socket::close | ( | ) |
Close the socket.
|
pure virtual |
Create a new socket.
Implemented in fge::net::SocketListenerTcp, fge::net::SocketTcp, and fge::net::SocketUdp.
|
inlinenodiscard |
Get the address type of the socket.
By default, the address type is Ipv4.
|
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.
|
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.
|
staticnodiscard |
Get the last platform specific error code.
|
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.
|
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.
|
inlinenodiscard |
Get the type of the socket.
Type can be one of the type defined in the Socket::Type enum
|
static |
Init the low-level socket library.
This call WSAStartup() on Windows and nothing on other platforms
|
nodiscard |
Check if the socket is in blocking mode.
|
nodiscard |
Check if the socket is valid.
The socket is valid if it has been created and not closed
Error 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).
read | true if the socket should be checked for readability, false otherwise |
timeoutms | The timeout in milliseconds |
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.
type | The address type of the socket (Ipv4 or Ipv6) |
Error fge::net::Socket::setBlocking | ( | bool | mode | ) |
Set the blocking mode of the socket.
mode | The blocking mode to set |
Error 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.
mode | The broadcast mode to set |
Error 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.
mode | The reuse mode to set |
|
static |
Shutdown the low-level socket library.