Librería para enchufes en C.
at main 112 lines 2.8 kB view raw view rendered
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```