GNU Info

Info Node: (guile.info)Network Databases and Address Conversion

(guile.info)Network Databases and Address Conversion


Next: Network Sockets and Communication Up: Networking
Enter node , (file) or (file)node

Network Databases and Address Conversion
----------------------------------------

This section describes procedures which convert internet addresses and
query various network databases.  Care should be taken when using the
database routines since they are not reentrant.

Address Conversion
..................

 - primitive: inet-aton address
     Converts a string containing an Internet host address in the
     traditional dotted decimal notation into an integer.

          (inet-aton "127.0.0.1") => 2130706433

 - primitive: inet-ntoa inetid
     Converts an integer Internet host address into a string with the
     traditional dotted decimal representation.

          (inet-ntoa 2130706433) => "127.0.0.1"

 - primitive: inet-netof address
     Returns the network number part of the given integer Internet
     address.

          (inet-netof 2130706433) => 127

 - primitive: inet-lnaof address
     Returns the local-address-with-network part of the given Internet
     address.

          (inet-lnaof 2130706433) => 1

 - primitive: inet-makeaddr net lna
     Makes an Internet host address by combining the network number NET
     with the local-address-within-network number LNA.

          (inet-makeaddr 127 1) => 2130706433

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:

 - procedure: hostent:name host
     The "official" hostname for HOST.

 - procedure: hostent:aliases host
     A list of aliases for HOST.

 - procedure: hostent:addrtype host
     The host address type.  For hosts with Internet addresses, this
     will return `AF_INET'.

 - procedure: hostent:length host
     The length of each address for HOST, in bytes.

 - procedure: hostent:addr-list host
     The list of network addresses associated with HOST.

The following procedures are used to search the host database:

 - primitive: gethost [host]
 - procedure: gethostbyname hostname
 - procedure: gethostbyaddr address
     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.

The following procedures may be used to step through the host database
from beginning to end.

 - 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.

 - 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.

 - procedure: endhostent
     Close the stream used by `gethostent'.  The return value is
     unspecified.

 - primitive: sethost [stayopen]
     If STAYOPEN is omitted, this is equivalent to `endhostent'.
     Otherwise it is equivalent to `sethostent stayopen'.

The Network Database
....................

The following functions accept an object representing a network and
return a selected component:

 - procedure: netent:name net
     The "official" network name.

 - procedure: netent:aliases net
     A list of aliases for the network.

 - procedure: netent:addrtype net
     The type of the network number.  Currently, this returns only
     `AF_INET'.

 - procedure: netent:net net
     The network number.

The following procedures are used to search the network database:

 - primitive: getnet [net]
 - procedure: getnetbyname net-name
 - procedure: getnetbyaddr net-number
     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.

 - 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.

 - procedure: getnetent
     Return the next entry from the network database.

 - procedure: endnetent
     Close the stream used by `getnetent'.  The return value is
     unspecified.

 - primitive: setnet [stayopen]
     If STAYOPEN is omitted, this is equivalent to `endnetent'.
     Otherwise it is equivalent to `setnetent stayopen'.

The Protocol Database
.....................

The following functions accept an object representing a protocol and
return a selected component:

 - procedure: protoent:name protocol
     The "official" protocol name.

 - procedure: protoent:aliases protocol
     A list of aliases for the protocol.

 - procedure: protoent:proto protocol
     The protocol number.

The following procedures are used to search the protocol database:

 - primitive: getproto [protocol]
 - procedure: getprotobyname name
 - procedure: getprotobynumber number
     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.

 - 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.

 - procedure: getprotoent
     Return the next entry from the protocol database.

 - procedure: endprotoent
     Close the stream used by `getprotoent'.  The return value is
     unspecified.

 - primitive: setproto [stayopen]
     If STAYOPEN is omitted, this is equivalent to `endprotoent'.
     Otherwise it is equivalent to `setprotoent stayopen'.

The Service Database
....................

The following functions accept an object representing a service and
return a selected component:

 - procedure: servent:name serv
     The "official" name of the network service.

 - procedure: servent:aliases serv
     A list of aliases for the network service.

 - procedure: servent:port serv
     The Internet port used by the service.

 - 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:

 - primitive: getserv [name [protocol]]
 - procedure: getservbyname name protocol
 - procedure: getservbyport port 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).

The following procedures may be used to step through the service
database from beginning to end.

 - 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.

 - procedure: getservent
     Return the next entry from the services database.

 - procedure: endservent
     Close the stream used by `getservent'.  The return value is
     unspecified.

 - primitive: setserv [stayopen]
     If STAYOPEN is omitted, this is equivalent to `endservent'.
     Otherwise it is equivalent to `setservent stayopen'.


automatically generated by info2www version 1.2.2.9