Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
CSocket Class Reference

Clase que representa un socket de comunicación. Se usa como base para la genereación de clases de comunicación. Se compone de una variable de tipo socket_t que representa el socket y una variable de tipo int32_t que representa el último error ocurrido. More...

#include <CSocket.hpp>

Inheritance diagram for CSocket:
[legend]

Public Member Functions

 CSocket ()
 Constructor por defecto. Inicializa el socket con el valor INVALID_SOCKET y el error a 0.
 
 CSocket (socket_t handle)
 Constructor parametrizado para un socket_t handle.
 
 CSocket (const CSocket &other)=delete
 Constructor de copia, eliminado para evitar su uso.
 
 CSocket (CSocket &&other) noexcept
 Constructor de movimiento.
 
virtual ~CSocket ()
 Destructor. Debe ser virtual para permitir la modificación en las clases derivadas.
 
CSocketoperator= (const CSocket &other)=delete
 Operador de asignación de copia, eliminado para evitar su uso.
 
CSocketoperator= (CSocket &&other) noexcept
 Operador de asignación de movimiento.
 
bool operator! () const
 Operador de negación.
 
 operator bool () const
 Operador de conversión a bool.
 
virtual bool bind (const CSocketAddress &address)
 Asigna una dirección a un socket.
 
bool bind (const sockaddr *address, socklen_t len) const
 
bool isOpen () const
 Comprueba que el handle del socket sea válido.
 
socket_t release ()
 Pone a -1 el handle interno y devuelve el valor anterior. Al no invalidar el file descriptor del socket, se puede usar para desasociar el socket del Sistema Operativo de un objeto CSocket concreto.
 
void reset (socket_t handle=INVALID_SOCKET)
 Asigna un nuevo handle al socket e invalida el anterior.
 
CSocket clone () const
 Crea un nuevo objeto CSocket con el mismo handle que el actual.
 
bool close ()
 Cierra el socket.
 
virtual CSocketAddressAny getAddress () const
 
virtual CSocketAddressAny getPeerAddress () const
 
virtual sa_family_t getFamily () const
 
socket_t getHandle () const
 
void setLastError (int32_t err=INT32_MAX) const
 
std::string getLastErrorString () const
 
void clearLastError (int32_t value=0) const
 
bool getOption (int32_t level, int32_t optName, void *optVal, socklen_t *optLength) const
 
template<typename T >
bool getOption (const int32_t level, const int32_t optName, T *value) const
 
bool setOption (int32_t level, int32_t optName, const void *optVal, socklen_t optLength) const
 
template<typename T >
bool setOption (const int32_t level, const int32_t optName, const T &value)
 
bool setNonBlocking (bool on=true) const
 

Static Public Member Functions

static CSocket create (int32_t domain, int32_t type, int32_t protocol=0)
 
static bool close (socket_t h)
 
static std::tuple< CSocket, CSocketpair (int32_t domain, int32_t type, int32_t protocol=0)
 

Protected Member Functions

template<typename T >
checkRet (T ret) const
 
template<typename T >
bool checkRetBool (T ret) const
 
socket_t checkSocket (socket_t ret) const
 
bool checkSocketBool (socket_t ret) const
 
bool closeOnError ()
 

Static Protected Member Functions

static int32_t getErrno ()
 Función que devuelve el valor actual de errno.
 

Protected Attributes

socket_t m_handle
 

Private Attributes

int32_t m_lastError
 

Detailed Description

Clase que representa un socket de comunicación. Se usa como base para la genereación de clases de comunicación. Se compone de una variable de tipo socket_t que representa el socket y una variable de tipo int32_t que representa el último error ocurrido.

See also
CSocketAddress
CStreamSocket

Constructor & Destructor Documentation

◆ CSocket() [1/4]

CSocket::CSocket ( )

Constructor por defecto. Inicializa el socket con el valor INVALID_SOCKET y el error a 0.

◆ CSocket() [2/4]

CSocket::CSocket ( socket_t handle)
explicit

Constructor parametrizado para un socket_t handle.

Parameters
handleSocket a asignar.

◆ CSocket() [3/4]

CSocket::CSocket ( const CSocket & other)
delete

Constructor de copia, eliminado para evitar su uso.

Parameters
otherSocket a copiar.

◆ CSocket() [4/4]

CSocket::CSocket ( CSocket && other)
noexcept

Constructor de movimiento.

Parameters
otherSocket a mover.

◆ ~CSocket()

CSocket::~CSocket ( )
virtual

Destructor. Debe ser virtual para permitir la modificación en las clases derivadas.

Member Function Documentation

◆ bind() [1/2]

bool CSocket::bind ( const CSocketAddress & address)
virtual

Asigna una dirección a un socket.

Parameters
addressDirección a la que el socket se va a asociar.
Returns
true si se ha podido asignar la dirección, false en caso contrario.

◆ bind() [2/2]

bool CSocket::bind ( const sockaddr * address,
socklen_t len ) const

◆ checkRet()

template<typename T >
T CSocket::checkRet ( T ret) const
inlineprotected

◆ checkRetBool()

template<typename T >
bool CSocket::checkRetBool ( T ret) const
inlineprotected

◆ checkSocket()

socket_t CSocket::checkSocket ( socket_t ret) const
inlineprotected

◆ checkSocketBool()

bool CSocket::checkSocketBool ( socket_t ret) const
inlineprotected

◆ clearLastError()

void CSocket::clearLastError ( int32_t value = 0) const

◆ clone()

CSocket CSocket::clone ( ) const

Crea un nuevo objeto CSocket con el mismo handle que el actual.

Note
No invalida el handle del objeto actual.
Returns
Nuevo objeto CSocket con el mismo handle que el actual.

◆ close() [1/2]

bool CSocket::close ( )

Cierra el socket.

Returns
true si se ha cerrado correctamente, false en caso contrario.

◆ close() [2/2]

bool CSocket::close ( socket_t h)
static

◆ closeOnError()

bool CSocket::closeOnError ( )
inlineprotected

◆ create()

CSocket CSocket::create ( int32_t domain,
int32_t type,
int32_t protocol = 0 )
static

◆ getAddress()

CSocketAddressAny CSocket::getAddress ( ) const
virtual

◆ getErrno()

int32_t CSocket::getErrno ( )
staticprotected

Función que devuelve el valor actual de errno.

Note
Esta función es estática pero protected, por lo que puede ser llamada desde las clases derivadas sin necesidad de crear un objeto de tipo CSocket.
Returns
Valor actual de errno.

◆ getFamily()

sa_family_t CSocket::getFamily ( ) const
virtual

◆ getHandle()

socket_t CSocket::getHandle ( ) const

◆ getLastErrorString()

std::string CSocket::getLastErrorString ( ) const

◆ getOption() [1/2]

template<typename T >
bool CSocket::getOption ( const int32_t level,
const int32_t optName,
T * value ) const
inline

◆ getOption() [2/2]

bool CSocket::getOption ( int32_t level,
int32_t optName,
void * optVal,
socklen_t * optLength ) const

◆ getPeerAddress()

CSocketAddressAny CSocket::getPeerAddress ( ) const
virtual

◆ isOpen()

bool CSocket::isOpen ( ) const

Comprueba que el handle del socket sea válido.

Returns
true si el handle es distinto de INVALID_SOCKET, false en caso contrario.

◆ operator bool()

CSocket::operator bool ( ) const
explicit

Operador de conversión a bool.

Returns
true si el socket es válido y no hay ningún error, false en caso contrario.

◆ operator!()

bool CSocket::operator! ( ) const

Operador de negación.

Returns
true si el socket es válido o hay algún error, false en caso contrario.

◆ operator=() [1/2]

CSocket & CSocket::operator= ( const CSocket & other)
delete

Operador de asignación de copia, eliminado para evitar su uso.

Parameters
otherSocket a copiar.
Returns
Referencia a este objeto.

◆ operator=() [2/2]

CSocket & CSocket::operator= ( CSocket && other)
noexcept

Operador de asignación de movimiento.

Parameters
otherSocket a mover.
Returns
Referencia a este objeto.

◆ pair()

std::tuple< CSocket, CSocket > CSocket::pair ( int32_t domain,
int32_t type,
int32_t protocol = 0 )
static

◆ release()

socket_t CSocket::release ( )

Pone a -1 el handle interno y devuelve el valor anterior. Al no invalidar el file descriptor del socket, se puede usar para desasociar el socket del Sistema Operativo de un objeto CSocket concreto.

Returns
Valor del handle anterior.

◆ reset()

void CSocket::reset ( socket_t handle = INVALID_SOCKET)

Asigna un nuevo handle al socket e invalida el anterior.

Parameters
handleNuevo handle a asignar.

◆ setLastError()

void CSocket::setLastError ( int32_t err = INT32_MAX) const

◆ setNonBlocking()

bool CSocket::setNonBlocking ( bool on = true) const

◆ setOption() [1/2]

template<typename T >
bool CSocket::setOption ( const int32_t level,
const int32_t optName,
const T & value )
inline

◆ setOption() [2/2]

bool CSocket::setOption ( int32_t level,
int32_t optName,
const void * optVal,
socklen_t optLength ) const

Member Data Documentation

◆ m_handle

socket_t CSocket::m_handle
protected

◆ m_lastError

int32_t CSocket::m_lastError
mutableprivate

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