(guile.info.gz) Network Databases
Info Catalog
(guile.info.gz) Network Address Conversion
(guile.info.gz) Networking
(guile.info.gz) Network Sockets and Communication
38.11.2 Network Databases
-------------------------
This section describes procedures which query various network databases.
Care should be taken when using the database routines since they are not
reentrant.
38.11.2.1 The Host Database
...........................
A "host object" is a structure that represents what is known about a
network host, and is the usual way of representing a system's network
identity inside software.
The following functions accept a host object and return a selected
component:
-- Scheme Procedure: hostent:name host
The "official" hostname for HOST.
-- Scheme Procedure: hostent:aliases host
A list of aliases for HOST.
-- Scheme Procedure: hostent:addrtype host
The host address type. For hosts with Internet addresses, this
will return `AF_INET'.
-- Scheme Procedure: hostent:length host
The length of each address for HOST, in bytes.
-- Scheme Procedure: hostent:addr-list host
The list of network addresses associated with HOST.
The following procedures are used to search the host database:
-- Scheme Procedure: gethost [host]
-- Scheme Procedure: gethostbyname hostname
-- Scheme Procedure: gethostbyaddr address
-- C Function: scm_gethost (host)
Look up a host by name or address, returning a host object. The
`gethost' procedure will accept either a string name or an integer
address; if given no arguments, it behaves like `gethostent' (see
below). If a name or address is supplied but the address can not
be found, an error will be thrown to one of the keys:
`host-not-found', `try-again', `no-recovery' or `no-data',
corresponding to the equivalent `h_error' values. Unusual
conditions may result in errors thrown to the `system-error' or
`misc_error' keys.
(gethost "www.gnu.org")
=> #("www.gnu.org" () 2 4 (3353880842))
(gethostbyname "www.emacs.org")
=> #("emacs.org" ("www.emacs.org") 2 4 (1073448978))
The following procedures may be used to step through the host
database from beginning to end.
-- Scheme Procedure: sethostent [stayopen]
Initialize an internal stream from which host objects may be read.
This procedure must be called before any calls to `gethostent',
and may also be called afterward to reset the host entry stream.
If STAYOPEN is supplied and is not `#f', the database is not
closed by subsequent `gethostbyname' or `gethostbyaddr' calls,
possibly giving an efficiency gain.
-- Scheme Procedure: gethostent
Return the next host object from the host database, or `#f' if
there are no more hosts to be found (or an error has been
encountered). This procedure may not be used before `sethostent'
has been called.
-- Scheme Procedure: endhostent
Close the stream used by `gethostent'. The return value is
unspecified.
-- Scheme Procedure: sethost [stayopen]
-- C Function: scm_sethost (stayopen)
If STAYOPEN is omitted, this is equivalent to `endhostent'.
Otherwise it is equivalent to `sethostent stayopen'.
38.11.2.2 The Network Database
..............................
The following functions accept an object representing a network and
return a selected component:
-- Scheme Procedure: netent:name net
The "official" network name.
-- Scheme Procedure: netent:aliases net
A list of aliases for the network.
-- Scheme Procedure: netent:addrtype net
The type of the network number. Currently, this returns only
`AF_INET'.
-- Scheme Procedure: netent:net net
The network number.
The following procedures are used to search the network database:
-- Scheme Procedure: getnet [net]
-- Scheme Procedure: getnetbyname net-name
-- Scheme Procedure: getnetbyaddr net-number
-- C Function: scm_getnet (net)
Look up a network by name or net number in the network database.
The NET-NAME argument must be a string, and the NET-NUMBER
argument must be an integer. `getnet' will accept either type of
argument, behaving like `getnetent' (see below) if no arguments are
given.
The following procedures may be used to step through the network
database from beginning to end.
-- Scheme Procedure: setnetent [stayopen]
Initialize an internal stream from which network objects may be
read. This procedure must be called before any calls to
`getnetent', and may also be called afterward to reset the net
entry stream. If STAYOPEN is supplied and is not `#f', the
database is not closed by subsequent `getnetbyname' or
`getnetbyaddr' calls, possibly giving an efficiency gain.
-- Scheme Procedure: getnetent
Return the next entry from the network database.
-- Scheme Procedure: endnetent
Close the stream used by `getnetent'. The return value is
unspecified.
-- Scheme Procedure: setnet [stayopen]
-- C Function: scm_setnet (stayopen)
If STAYOPEN is omitted, this is equivalent to `endnetent'.
Otherwise it is equivalent to `setnetent stayopen'.
38.11.2.3 The Protocol Database
...............................
The following functions accept an object representing a protocol and
return a selected component:
-- Scheme Procedure: protoent:name protocol
The "official" protocol name.
-- Scheme Procedure: protoent:aliases protocol
A list of aliases for the protocol.
-- Scheme Procedure: protoent:proto protocol
The protocol number.
The following procedures are used to search the protocol database:
-- Scheme Procedure: getproto [protocol]
-- Scheme Procedure: getprotobyname name
-- Scheme Procedure: getprotobynumber number
-- C Function: scm_getproto (protocol)
Look up a network protocol by name or by number. `getprotobyname'
takes a string argument, and `getprotobynumber' takes an integer
argument. `getproto' will accept either type, behaving like
`getprotoent' (see below) if no arguments are supplied.
The following procedures may be used to step through the protocol
database from beginning to end.
-- Scheme Procedure: setprotoent [stayopen]
Initialize an internal stream from which protocol objects may be
read. This procedure must be called before any calls to
`getprotoent', and may also be called afterward to reset the
protocol entry stream. If STAYOPEN is supplied and is not `#f',
the database is not closed by subsequent `getprotobyname' or
`getprotobynumber' calls, possibly giving an efficiency gain.
-- Scheme Procedure: getprotoent
Return the next entry from the protocol database.
-- Scheme Procedure: endprotoent
Close the stream used by `getprotoent'. The return value is
unspecified.
-- Scheme Procedure: setproto [stayopen]
-- C Function: scm_setproto (stayopen)
If STAYOPEN is omitted, this is equivalent to `endprotoent'.
Otherwise it is equivalent to `setprotoent stayopen'.
38.11.2.4 The Service Database
..............................
The following functions accept an object representing a service and
return a selected component:
-- Scheme Procedure: servent:name serv
The "official" name of the network service.
-- Scheme Procedure: servent:aliases serv
A list of aliases for the network service.
-- Scheme Procedure: servent:port serv
The Internet port used by the service.
-- Scheme Procedure: servent:proto serv
The protocol used by the service. A service may be listed many
times in the database under different protocol names.
The following procedures are used to search the service database:
-- Scheme Procedure: getserv [name [protocol]]
-- Scheme Procedure: getservbyname name protocol
-- Scheme Procedure: getservbyport port protocol
-- C Function: scm_getserv (name, protocol)
Look up a network service by name or by service number, and return
a network service object. The PROTOCOL argument specifies the name
of the desired protocol; if the protocol found in the network
service database does not match this name, a system error is
signalled.
The `getserv' procedure will take either a service name or number
as its first argument; if given no arguments, it behaves like
`getservent' (see below).
(getserv "imap" "tcp")
=> #("imap2" ("imap") 143 "tcp")
(getservbyport 88 "udp")
=> #("kerberos" ("kerberos5" "krb5") 88 "udp")
The following procedures may be used to step through the service
database from beginning to end.
-- Scheme Procedure: setservent [stayopen]
Initialize an internal stream from which service objects may be
read. This procedure must be called before any calls to
`getservent', and may also be called afterward to reset the
service entry stream. If STAYOPEN is supplied and is not `#f',
the database is not closed by subsequent `getservbyname' or
`getservbyport' calls, possibly giving an efficiency gain.
-- Scheme Procedure: getservent
Return the next entry from the services database.
-- Scheme Procedure: endservent
Close the stream used by `getservent'. The return value is
unspecified.
-- Scheme Procedure: setserv [stayopen]
-- C Function: scm_setserv (stayopen)
If STAYOPEN is omitted, this is equivalent to `endservent'.
Otherwise it is equivalent to `setservent stayopen'.
Info Catalog
(guile.info.gz) Network Address Conversion
(guile.info.gz) Networking
(guile.info.gz) Network Sockets and Communication
automatically generated byinfo2html