Librería para enchufes en C.

docs: New README

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