Librería para enchufes en C.
C 72.2%
C++ 22.4%
Makefile 5.4%
8 1 0

Clone this repository

https://tangled.org/stau.space/enchufe
git@tangled.org:stau.space/enchufe

For self-hosted knots, clone URLs may differ based on your setup.

README.md

enchufe#

Esto es una libreria de sockets escrita en C.

Hasta ahora estas son las funciones que hay:

inline FD nuevo();
inline Receptaculo receptaculo(IPv4 ip, Port port);
inline Enchufe aplasta(FD fd, Receptaculo rec);

Enchufe enchufa(IPv4 ip, Port port);
void conecta(Enchufe enchufe);
void amarra(Enchufe enchufe);
void escucha(Enchufe enchufe, size_t len);
Enchufe acepta(Enchufe enchufe);
void zumba(Enchufe enchufe, Buffer in_buf);
void recibe(Enchufe enchufe, Buffer out_buf);
void desenchufa(Enchufe enchufe);

Para muchas operaciones de esta libreria necesitaras un enchufe. Lo primero que tienes que hacer es adquirir un enchufe, para esto usa la funcion enchufa:

Enchufe enchufa();

Hay veces donde solo vas a querer usar el "file descriptor" de un enchufe, o crear un enchufe sin receptaculo. Para esto tienes las funciones:

inline FD nuevo();
inline Receptaculo receptaculo(IPv4 ip, Port port);
inline Enchufe aplasta(FD fd, Receptaculo rec);

Hacen exactamente lo que el prototipo dice que hacen. En este caso, la funcion aplasta coge el "file descriptor" y el Receptaculo que se le pasa y crea un enchufe con estos. Por eso, la implementacion de enchufa se ve asi:

Enchufe enchufa(IPv4 ip, Port port) {
	return aplasta(nuevo(), receptaculo(ip, port));
}

La funcion amarra toma el enchufe que se le pasa y amarra el "file descriptor" con el receptaculo del enchufe. Creando un socket con una direccion.

amarra(Enchufe enchufe);

Para hacer que un enchufe preste atencion a lo que se le conecta tendras que utilizar la funcion escucha:

void escucha(Enchufe enchufe, size_t len);

Esta fuuncion toma como parametros el enchufe que quires que se ponga a escuchar y la cantidad de conexiones que quieres que esperen. Este segundo parametro es importante porque si tienes demaisiadas conexiones es mejor decirle a les clientes que dejen de conectarse. Este numero le deja saber al programa cuan larga debe ser la cola de conexiones.


Despues de poner una conexion a escuchar es importante atender a les clientes que intenten comunicarse por ese enchufe. Para eso, existe la funcion acepta:

Enchufe acepta(Enchufe enchufe);

Esta funcion devuelve el enchufe que se acaba de conectar.


Para conectarte a un cliente: toma el enchufe, despues de amarralo con amarra y llama la funcion conecta:

void conecta(Enchufe enchufe);

Este creara la conexion.


Para enviar o recibir data, puedes usar estas funciones

void zumba(Enchufe enchufe, Buffer buf);
void recibe(Enchufe enchufe, Buffer buf);

Cuando termines de usar un enchufe, DESCONECTALO usando la funcion desenchufa:

void desenchufa(Enchufe enchufe);