FBB::InetAddress(3bobcat)
Network Byte Order
(libbobcat-dev_6.06.02)
2005-2024
NAME
FBB::InetAddress - Converting between host byte order and network byte order
SYNOPSIS
    #include <bobcat/inetaddress>
    Linking option: -lbobcat
DESCRIPTION
    Computers differ their word-byte order, called `endianness'. A
little-endian computer has its least significant byte at the byte having the
lower address of a two-byte value, whereas a big-endian computer has its least
significant byte at at the byte having the higher address of a two-byte
value. In order to allow these computers to communicate over over Internet,
host byte order was designed. Objects of the class FBB::InetAddress
may be used to convert between network byte order and host byte order (and
vice versa).
The class only has a few public members. Most members are protected, and
FBB::InetAddress is therefore primarily used as a base class from which
other classes are derived. In practice there will be little need to construct
objects of the class FBB::InetAddress, which is primarily a support class
for the FBB socket-classes.
Internally, all data are stored in network byte order.
As the class' constructors depend on the proper functioning of members of
the FBB:GetHostent class, the class' objects can only be constructed when
the host whose name or address is searched can be resolved by a name
resolution process, e.g., bind(1).
Objects of the class FBB::InetAddress store address information about
a host in a struct sockaddr_in data member. A struct sockaddr_in is
the data type used to represent socket addresses in the Internet namespace.
It has the following members:
    
    -  sa_family_t sin_family:
 This identifies the address family or format of the socket
        address.  It holds the value AF_INET.
-  struct in_addr sin_addr:
 This is the Internet address of the host machine stored as a binary
        value.
-  size_t short int sin_port:
 This field holds the port number.
NAMESPACE
    FBB
    All constructors, members, operators and manipulators, mentioned in this
man-page, are defined in the namespace FBB.
INHERITS FROM
    -
PROTECTED CONSTRUCTORS
    
    -  InetAddress(std::string const &host, uint16_t port):
 This constructor expects a host name or dotted decimal address and
and an (size_t) port number, and determines the host's address
information. An FBB::Exception exception is thrown if the address could not be
determined.
-  InetAddress(uint16_t port):
 This constructor constructs the `generic' address information that is
used when constructing, e.g. server sockets.
-  InetAddress(sockaddr_in const &address):
 This constructor constructs an FBB::InetAddress object from an
initialized sockaddr_in object. It is primarily used to promote a
sockaddr_in to an FBB::InetAddresss.
The (public) copy and move constructors (and assignment operators) are
    available.
MEMBER FUNCTIONS
    
    -  uint16_t port() const:
 Accessor returning the object's port value.
-  std::string dottedDecimalAddress() const:
 Accessor returning the object's Internet address as a dotted decimal
string. If the address could not be determined, an FBB::Exception object is
thrown.
-  size_t size() const:
 Accessor returning the size of the object's sockaddr_in (address)
        information.
-  sockaddr const *sockaddrPtr() const:
 Accessor returning the pointer to the object's sockaddr data
        member.
-  sockaddr_in const *sockaddr_inPtr() const:
 Accessor returning the pointer to the object's sockaddr_in data
        member.
PROTECTED MEMBER FUNCTIONS
    
    -  sockaddr *sockaddrPtr():
 This member returns the object's address information as a pointer to a
modifiable struct sockaddr. This allows (contrary to the public member
having the same name) derived objects to manipulate the object's address
information directly.
-  sockaddr_in *sockaddr_inPtr():
 This member returns the object's address information as a pointer to a
modifiable struct sockaddr_in. This allows (contrary to the public member
having the same name) derived objects to manipulate the object's address
information directly.
EXAMPLE
    
#include <iostream>
#include <bobcat/inetaddress>
#include <bobcat/exception>
using namespace std;
using namespace FBB;
InetAddress X()
{
    class A: public InetAddress
    {
        public:
        A(uint16_t port)
        :
            InetAddress(port)
        {}
    };
    return A(2000);
}
int main(int argc, char **argv)
try
{
    InetAddress const &ia = X();
    cout << "A InetAddress was constructed for port " << ia.port() <<
            endl;
    cout << "It has the generic `ANY' address: " <<
            ia.dottedDecimalAddress() << endl;
}
catch (exception const &e)
{
    cout << "Exception: " << e.what() << endl;
}
FILES
    bobcat/inetaddress - defines the class interface
SEE ALSO
    bind(1), bobcat(7), gethostent(3bobcat),
    socketbase(3bobcat)
BUGS
    None Reported.
BOBCAT PROJECT FILES
    -  https://fbb-git.gitlab.io/bobcat/: gitlab project page;
    
-  bobcat_6.06.02-x.dsc: detached signature;
    
-  bobcat_6.06.02-x.tar.gz: source archive;
    
-  bobcat_6.06.02-x_i386.changes: change log;
    
-  libbobcat1_6.06.02-x_*.deb: debian package containing the
            libraries;
    
-  libbobcat1-dev_6.06.02-x_*.deb: debian package containing the
            libraries, headers and manual pages;
    
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).