Socket
Librería para comunicar via TCP/IP
|
Clase del socket. Más...
#include <Socket.h>
Métodos públicos | |
Socket () | |
Constructor de la clase Socket. Más... | |
void | Create () |
Método para crear sockets. Más... | |
void | Bind (string address, int port) |
Método para hacer bind a una dirección y puerto. Más... | |
void | Listen (int backlog) |
Método para escuchar conexiones. Más... | |
void | Accept (Socket &clientSock) |
Método para aceptar conexiones. Más... | |
void | Connect (string hostname, int port) |
Método para efectuar conexiones. Más... | |
void | Close () |
Método para cerrar sockets. Más... | |
int | getSock () |
Getter para el file descriptor del socket. Más... | |
const Socket & | operator<< (const string &) |
Método para enviar mensajes. Más... | |
const Socket & | operator>> (string &) |
Método para recibir mensajes. Más... | |
Métodos privados | |
int | Receive (char *buff, int length) |
Método para recibir un mensaje de longitud conocida. Más... | |
int | Send (const char *buff, int length) |
Método para enviar un mensaje de longitud conocida. Más... | |
Atributos privados | |
int | sock |
Descriptor del fichero del socket. Más... | |
struct sockaddr_in | sockAddr |
Estructura de dirección de socket. Más... | |
Clase del socket.
Esta clase define un objeto con los métodos y atributos necesarios para realizar comunicación encriptada o en texto llano a través de un socket TCP/IP en un entorno UNIX abstrayendo la implementación de sockets y de encriptación al programador.
Socket::Socket | ( | ) |
Constructor de la clase Socket.
Inicializa el file descriptor del socket y prepara la memoria donde se almacenarán las llaves públicas.
void Socket::Accept | ( | Socket & | clientSock) |
void Socket::Bind | ( | string | address, |
int | port | ||
) |
Método para hacer bind a una dirección y puerto.
Este método asigna el socket a una dirección IP (y por tanto, a una interfaz de red en concreto) y un puerto, para que
posteriormente actúe de servidor escuchando conexiones.
address | Dirección IP asignada |
port | Puerto asignado |
void Socket::Close | ( | ) |
Método para cerrar sockets.
Este método cierra el socket para que no se pueda escribir ni leer más en él, para liberarlo del kernel y terminar la conexión TCP.
void Socket::Connect | ( | string | hostname, |
int | port | ||
) |
Método para efectuar conexiones.
Este método sirve a los sockets que actúan como cliente para poder efectuar conexiones a otro socket que esté escuchando en la
dirección y puerto especificados y atienda conexiones.
hostname | Hostname al que conectarse |
port | Puerto al que conectarse |
void Socket::Create | ( | ) |
Método para crear sockets.
Crea un file descriptor para un socket que por defecto no está conectado ni asignado a ninguna dirección.
int Socket::getSock | ( | ) |
Getter para el file descriptor del socket.
Este método devuelve el file descriptor del socket.
void Socket::Listen | ( | int | backlog) |
Método para escuchar conexiones.
Este método configura el socket para que se ponga en modo escucha y así pueda atender conexiones entrantes.
backlog | Número máximo de conexiones en espera |
const Socket & Socket::operator<< | ( | const string & | text) |
Método para enviar mensajes.
Este método envía el mensaje que se le proporciona a través del Socket con o sin encriptación según
las opciones de compilación usando el protocolo implementado.
text | Mensaje a enviar |
const Socket & Socket::operator>> | ( | std::string & | text) |
Método para recibir mensajes.
Este método recibe un mensaje de longitud arbitrária con o sin encriptación según las \ref defines "opciones de compilación" usando
el protocolo implementado.
text | Mensaje a recibir |
|
private |
Método para recibir un mensaje de longitud conocida.
Este método se usa para recibir un mensaje de la longitud que se especifica por argumento y almacenarlo en el buffer proporcionado.
Este método garantiza que todo el mensaje se recibirá entero aunque la red no admita una longitud de paquete tan grande.
buff | Buffer donde se almacena el mensaje recibido |
length | Longitud del mensaje a recibir |
|
private |
Método para enviar un mensaje de longitud conocida.
Este método se usa para enviar un mensaje de la longitud especifidada en el argumento y devuelve el número de bytes enviados.
Este método garantiza que todo el mensaje se enviará entero aunque la red no admita una longitud de paquete tan grande.
buff | Buffer con el mensaje a enviar |
length | Longitud del mensaje |
|
private |
Descriptor del fichero del socket.
Esta variable contiene el file descriptor del socket abierto por el SO.
|
private |
Estructura de dirección de socket.
Este struct es usado por el SO para gestionar la dirección del socket abierto.