Librería para enchufes en C.
1# enchufe
2
3Esto es una libreria de sockets escrita en C.
4
5Hasta ahora estas son las funciones que hay:
6```c
7inline FD nuevo();
8inline Receptaculo receptaculo(IPv4 ip, Port port);
9inline Enchufe aplasta(FD fd, Receptaculo rec);
10
11Enchufe enchufa(IPv4 ip, Port port);
12void conecta(Enchufe enchufe);
13void amarra(Enchufe enchufe);
14void escucha(Enchufe enchufe, size_t len);
15Enchufe acepta(Enchufe enchufe);
16void zumba(Enchufe enchufe, Buffer in_buf);
17void recibe(Enchufe enchufe, Buffer out_buf);
18void desenchufa(Enchufe enchufe);
19```
20
21---
22
23Para muchas operaciones de esta libreria necesitaras un enchufe. Lo primero que
24tienes que hacer es adquirir un enchufe, para esto usa la funcion `enchufa`:
25
26```c
27Enchufe enchufa();
28```
29
30---
31
32Hay veces donde solo vas a querer usar el "file descriptor" de un enchufe, o
33crear un enchufe sin receptaculo. Para esto tienes las funciones:
34```
35inline FD nuevo();
36inline Receptaculo receptaculo(IPv4 ip, Port port);
37inline Enchufe aplasta(FD fd, Receptaculo rec);
38```
39
40Hacen exactamente lo que el prototipo dice que hacen. En este caso, la funcion
41`aplasta` coge el "file descriptor" y el Receptaculo que se le pasa y crea un
42enchufe con estos. Por eso, la implementacion de `enchufa` se ve asi:
43
44```c
45Enchufe enchufa(IPv4 ip, Port port) {
46 return aplasta(nuevo(), receptaculo(ip, port));
47}
48```
49
50---
51
52La funcion `amarra` toma el enchufe que se le pasa y amarra el "file descriptor"
53con el receptaculo del enchufe. Creando un socket con una direccion.
54
55```c
56amarra(Enchufe enchufe);
57```
58
59---
60
61Para hacer que un enchufe preste atencion a lo que se le conecta tendras que
62utilizar la funcion `escucha`:
63
64```c
65void escucha(Enchufe enchufe, size_t len);
66```
67
68Esta fuuncion toma como parametros el enchufe que quires que se ponga a escuchar
69y la cantidad de conexiones que quieres que esperen. Este segundo parametro es
70importante porque si tienes demaisiadas conexiones es mejor decirle a les
71clientes que dejen de conectarse. Este numero le deja saber al programa cuan
72larga debe ser la cola de conexiones.
73
74---
75
76Despues de poner una conexion a escuchar es importante atender a les clientes
77que intenten comunicarse por ese enchufe. Para eso, existe la funcion `acepta`:
78
79```c
80Enchufe acepta(Enchufe enchufe);
81```
82
83Esta funcion devuelve el enchufe que se acaba de conectar.
84
85---
86
87Para conectarte a un cliente: toma el enchufe, despues de amarralo con `amarra`
88y llama la funcion `conecta`:
89
90```c
91void conecta(Enchufe enchufe);
92```
93
94Este creara la conexion.
95
96---
97
98Para enviar o recibir data, puedes usar estas funciones
99
100```c
101void zumba(Enchufe enchufe, Buffer buf);
102void recibe(Enchufe enchufe, Buffer buf);
103```
104
105---
106
107Cuando termines de usar un enchufe, **DESCONECTALO** usando la funcion
108`desenchufa`:
109
110```c
111void desenchufa(Enchufe enchufe);
112```