SINOPSIS
#include <netdb.h>
struct servent *getservent(void);
struct servent *getservbyname(const char *name, const char *proto);
struct servent *getservbyport(int port, const char *proto);
void setservent(int stayopen);
void endservent(void);
DESCRIPCIÓN
La función getservent() lee la siguiente línea del fichero /etc/services y devuelve una estructura servent que contiene en sus campos los campos de la línea. Si es necesario, se abre el fichero /etc/services.La función getservbyname() devuelve una estructura servent conteniendo los campos de la línea de /etc/services que contiene el servicio name y usa el protocolo proto. Si proto vale NULL, cualquier protocolo se dará como válido.
La función getservbyport() devuelve una estructura de tipo servent con los datos de la línea que contiene el puerto port (con los bytes en el orden de red) y usa el protocolo proto. Si proto vale NULL, cualquier protocolo se dará como válido.
La función setservent() abre y reinicia el fichero /etc/services. Si stayopen es verdadero (1), entonces no se cerrará el fichero entre llamadas a las funciones getservbyname() y getservbyport().
La función endservent() cierra el fichero /etc/services.
La estructura servent está definida en <netdb.h> como sigue:
-
struct servent { char *s_name; /* nombre oficial del servicio */ char **s_aliases; /* lista de alias */ int s_port; /* número de puerto */ char *s_proto; /* protocolo a usar */ }
Los miembros de la estructura servent son:
- s_name
- El nombre oficial del servicio.
- s_aliases
- Una lista terminada en cero de nombres alternativos para el servicio.
- s_port
- El numero de puerto para el servicio, con sus bytes en el orden de red.
- s_proto
- El nombre del protoclo a usar con este servicio.
VALOR DEVUELTO
Las funciones getservent(), getservbyname() y getservbyport() devuelve una estructura de tipo servent, o un puntero NULL si ha ocurrido un error o se ha alcanzado el final del fichero.FICHEROS
- /etc/services
- Fichero de base de datos de servicios