The Services Database
---------------------
The database that keeps track of "well-known" services is usually
either the file `/etc/services' or an equivalent from a name server.
You can use these utilities, declared in `netdb.h', to access the
services database.
- Data Type: struct servent
This data type holds information about entries from the services
database. It has the following members:
`char *s_name'
This is the "official" name of the service.
`char **s_aliases'
These are alternate names for the service, represented as an
array of strings. A null pointer terminates the array.
`int s_port'
This is the port number for the service. Port numbers are
given in network byte order; see Note:Byte Order.
`char *s_proto'
This is the name of the protocol to use with this service.
Note:Protocols Database.
To get information about a particular service, use the
`getservbyname' or `getservbyport' functions. The information is
returned in a statically-allocated structure; you must copy the
information if you need to save it across calls.
- Function: struct servent * getservbyname (const char *NAME, const
char *PROTO)
The `getservbyname' function returns information about the service
named NAME using protocol PROTO. If it can't find such a service,
it returns a null pointer.
This function is useful for servers as well as for clients; servers
use it to determine which port they should listen on (Note:Listening).
- Function: struct servent * getservbyport (int PORT, const char
*PROTO)
The `getservbyport' function returns information about the service
at port PORT using protocol PROTO. If it can't find such a
service, it returns a null pointer.
You can also scan the services database using `setservent',
`getservent' and `endservent'. Be careful when using these functions
because they are not reentrant.
- Function: void setservent (int STAYOPEN)
This function opens the services database to begin scanning it.
If the STAYOPEN argument is nonzero, this sets a flag so that
subsequent calls to `getservbyname' or `getservbyport' will not
close the database (as they usually would). This makes for more
efficiency if you call those functions several times, by avoiding
reopening the database for each call.
- Function: struct servent * getservent (void)
This function returns the next entry in the services database. If
there are no more entries, it returns a null pointer.
- Function: void endservent (void)
This function closes the services database.