-
Notifications
You must be signed in to change notification settings - Fork 0
/
common_socket.h
57 lines (48 loc) · 2.51 KB
/
common_socket.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#ifndef COMMON_SOCKET_H
#define COMMON_SOCKET_H
#include <stdio.h>
#include <stdbool.h>
#include "common_cipher.h"
//-------------------------------------------------------------------------
typedef struct{
int fd;
struct addrinfo* results_getaddr;
} socket_t;
/* socket_init y socket_uninit ahora establecen correctamente el fd en su
valor invalido(-1) y se mejora el RAII y la simetria */
/* Recibe un socket_t, inicializa el client_t y lo atributos correspondientes
si no hay errores devuelve 0 sino devuelve -1 */
int socket_init(socket_t *self);
/* Recibe un socket_t, destruye el socket liberando los recursos utilizados, es
si no hay errores devuelve 0 sino devuelve -1 */
int socket_uninit(socket_t *self);
/* Recibe un socket_t, el host, el port y un booleano que indica si se trata
de un server(true) o no. Aplicando el getaddrinfo se obtiene la lista
de direcciones sobre las cuales se intentara la conexion. Si se trata de un
server llama a la funcion bind, si se trata de un clinete se llama a la
funcion connect. Si no hay errores devuelve 0 sino devuelve -1 */
int socket_get_addresses(socket_t *self, const char *host,
const char *service, bool is_server);
/* Recibe un socket_t y enlaza el socket con el resultado obtenido en
get_addresses. Ademas agrego la iteracion sobre la lista de getaddrinfo
que faltaba. Si no hay errores devuelve 0 sino devuelve -1 */
int socket_bind(socket_t *self);
/* Recibe un socket_t y establece el servidor a la escucha de clientes
(en este caso como se debe conectar unicamente con uno, solo hay un lugar
en la cola de espera). Si no hay errores devuelve 0 sino devuelve -1 */
int socket_listen(socket_t *self);
/* Recibe un socket_t aceptador(server) y un socket_t peer correspondiente
al cliente, acepta una conexion entrante. Si no hay errores devuelve 0
sino devuelve -1 */
int socket_accept(socket_t *listener, socket_t *peer);
/* Recibe un socket_t que intenta conectarse con el resultado obtenido en
get_addresses. Si no hay errores devuelve 0 sino devuelve -1 */
int socket_connect(socket_t *self);
/* Recibe un socket_t, un buffer y longitud de bytes a enviar a traves
del socket. Si no hay errores devuelve 0 sino devuelve -1 */
int socket_send(socket_t *self, char* buffer, size_t buffer_size);
/* Recibe un socket_t, un buffer y longitud de bytes a recibir a traves
del socket. Si no hay errores devuelve 0 sino devuelve -1 */
ssize_t socket_receive(socket_t *self, char* buffer, int buffer_size);
//-------------------------------------------------------------------------
#endif