---
name: "hostent"
section: "3bobcat"
platform: "linux"
package: "libbobcat-dev"
version: "6.07.01-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/hostent"
---

# hostent(3bobcat)

Wrapper around a struct hostent

## NAME

FBB::Hostent - Wrapper around a **struct hostent**

## SYNOPSIS

**#include \<bobcat/hostent\>**\
 Linking option: *-lbobcat*

## DESCRIPTION

**@CLASS** objects are wrappers around **hostent** structs which may be used by other objects. A **struct hostent** is defined as follows:

```
    struct hostent
    {
        char    *h_name;        // official name of host
        char    **h_aliases;    // alias list
        int     h_addrtype;     // host address type (always AF_INET)
        int     h_length;       // length of address
        char    **h_addr_list;  // list of addresses
    }
```

The *address* fields are binary values of the addresses, each address requiring *h\_length* bytes, the last address being equal to 0. The **@CLASS** objects offer a **C++**-like interface to this struct.

## NAMESPACE

**FBB**\
 All constructors, members, operators and manipulators, mentioned in this man-page, are defined in the namespace **FBB**.

## INHERITS FROM

\-

## CONSTRUCTORS

- o

  **Hostent(hostent const \*hostentPtr)**:\
   This constructor initializes an **@CLASS** object from an existing **hostent** struct. Functions like [**gethostbyname**(3)](/gethostbyname/3.md) and **gethostbyaddress**(3) return pointers to **hostent** structs.

The default, copy and move constructors (and the copy and move assignment operators) are available.

## MEMBER FUNCTIONS

- o

  **size\_t addressLength() const**:\
   This member returns the length of the binary addresses in bytes.

- o

  **size\_t addressType() const**:\
   This member returns the type of the address. Currently this is always **AF\_INET**.

- o

  **char const \*alias(size\_t index) const**:\
   This member returns alias \`*index*’ of the host. The first alias has *index 0*. If alias \`*index*’ does not exist, 0 is returned.

- o

  **char const \* const \*beginAlias() const**:\
   This member returns an iterator to the first alias. The hostname itself is not included in the list of aliases.

- o

  **char const \*binaryAddress(size\_t index) const**:\
   This member returns the binary address \`*index*’ of the host.  The first address has *index 0*. If address \`*index*’ does not exist, 0 is returned. The pointer to the binary address points to a series of **addressLength()** bytes. Note that the returned address is in *network* *byte order*. It can be converted to host byte order by the functions described in [**byteorder**(3)](/byteorder/3.md).

- o

  **std::string dottedDecimalAddress(size\_t index) const**:\
   This member returns address \`*index*’ as a dotted decimal address in a string. The first address has *index 0*. If address \`*index*’ does not exist, an empty string is returned.

- o

  **char const \* const \*endAlias() const**:\
   This member returns an iterator pointing beyond the last alias.

- o

  **char const \*hostname() const**:\
   This member returns the standard (first) name of the host.

- o

  **size\_t nAddresses() const**:\
   This member returns the number of addresses that are available. When requesting a particular address, the requested index should be less than the value returned by this member.

- o

  **size\_t nAliases() const**:\
   This member returns the number of aliases that are available. When requesting a particular alias, the requested index should be less than the value returned by this member.

- o

  **void swap(Hostent &other)**:\
   The current *Hostent* object’s content are swapped with the other object’s content.

## EXAMPLE

```
    #include <iostream>
    #include <algorithm>
    #include <iterator>
    #include <bobcat/hostent>
    using namespace std;
    using namespace FBB;
    int main(int argc, char **argv)
    {
        Hostent he(gethostbyname("localhost"));
        cout << "The local hostname = " << he.hostname() << endl;
        cout << "All aliases: " << endl;
        copy(he.beginAlias(), he.endAlias(),
                    ostream_iterator<char const *>(cout, "\n"));
        cout << "Addresses:\n";
        for (size_t idx = 0; idx < he.nAddresses(); idx++)
            cout << he.dottedDecimalAddress(idx) << endl;
    }
```

## FILES

*bobcat/hostent* - defines the class interface

## SEE ALSO

[**bobcat**(7)](/bobcat/7.md)

## BUGS

None Reported.

## BOBCAT PROJECT FILES

- o

  *https://fbb-git.gitlab.io/bobcat/*: gitlab project page;

Debian Bobcat project files:

- o

  *libbobcat6*: debian package containing the shared library, changelog and copyright note;

- o

  *libbobcat-dev*: debian package containing the static library, headers, manual pages, and developer info;

## BOBCAT

Bobcat is an acronym of \`Brokken’s Own Base Classes And Templates’.

## COPYRIGHT

This is free software, distributed under the terms of the GNU General Public License (GPL).

## AUTHOR

Frank B. Brokken (**f.b.brokken@rug.nl**).
