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);