commit package to go along with the last commit, thanks fofware
[packages.git] / net / remotectrl / src / Socket.h
1 /**
2  * Javier Abellán, 20 Junio 2000
3  *
4  * Funciones de lectura y escritura de la librería de sockets.
5  *
6  * MODIFICACIONES:
7  * 4 de Septiembre de 2003. Añadidas funciones Lee_Socket_Udp(), 
8  *    Escribe_Socket_Udp() y Dame_Direccion_Udp()
9  */
10 #ifndef _SOCKET_H
11 #define _SOCKET_H
12
13 #include <sys/socket.h>
14
15 /*
16 enum 
17 {
18         MSG_OK = 0,
19         MSG_QRY,
20         MSG_START,
21         MSG_PART,
22         MSG_END,
23 };
24 int ReadTcpSocket(int fd, char **msg);
25 int WriteTcpSocket(int fd, struct *Datos);
26 */
27 struct head_t {
28         int type;
29         int command;
30         int len;
31 };
32
33 struct s_msg {
34         int type;
35         int command;
36         int len;
37         char data[30];
38 };
39
40 int ReadTcpSocket (int fd, char **Datos);
41 int WriteTcpSocket (int fd, int type, int command, char *Datos);
42
43 /** Lee Datos de tamaño Longitud de un socket cuyo descriptor es fd.
44  * Devuelve el numero de bytes leidos o -1 si ha habido error */
45 int Lee_Socket1 (int fd, char *Datos, int Longitud);
46
47 /** Envia Datos de tamaño Longitud por el socket cuyo descriptor es fd.
48  * Devuelve el número de bytes escritos o -1 si ha habido error. */
49 int Escribe_Socket (int fd, char *Datos, int Longitud);
50
51 /** Lee un mensaje de un socket UDP.
52  * Se le pasa el descriptor fd del socket que atiende los mensajes.
53  * Se le pasa uns estructura sockaddr que nos devolverá rellena con los datos del que nos
54  * ha enviado el mensaje, de forma que podamos responderle.
55  * Se le pasa el tamaño de la estructura Remoto. En la misma variable nos devolverá el
56  * tamaño de los datos devueltos.
57  * Se le pasa un buffer de datos para el mensaje y el tamaño en bytes que deseamos leer.
58  */
59 int Lee_Socket_Udp (int fd, struct sockaddr *Remoto, socklen_t *Longitud_Remoto, 
60         char *Datos, int Longitud_Datos);
61
62 /** Envia un mensaje por un socket UDP
63  * Se le pasa el descriptor de socket por el que debe enviar.
64  * Se le pasa el destinatario del mensaje en una estructura Remoto.
65  * Se le pasa el tamaño de dicha estructura en Longitud_Remoto.
66  * Se le pasa el buffer de datos que debe enviar en Datos.
67  * Se le pasa la longitud del buffer de datos en Longitud.
68  * Devuelve el número de bytes enviados o -1 si ha habido algún error.
69  */
70 int Escribe_Socket_Udp (int fd, struct sockaddr *Remoto, 
71         socklen_t Longitud_Remoto, char *Datos, int Longitud);
72
73 /**
74  * Rellena una estructura sockaddr_in con los datos que se le pasan. Esta estrutura es
75  * útil para el envio o recepción de mensajes por sockets Udp o para abrir conexiones.
76  * Se le pasa el host. Puede ser NULL (para abrir socket servidor Udp o para recepción de
77  * mensajes de cualquier host).
78  * Se le pasa el servicio. Puede ser NULL (para abrir socket cliente Udp).
79  * Se le pasa una estructura sockaddr_in que devolverá rellena.
80  * Se le pasa una Longitud. Debe contener el tamaño de la estructura sockaddr_in y
81  * devolverá el tamaño de la estructura una vez rellena.
82  * Devuelve -1 en caso de error.
83  */
84 int Dame_Direccion_Udp (char *Host, char *Servicio, struct sockaddr_in *Servidor,
85    int *Longitud);
86 #endif