FBB::InetAddress - Converting between host byte order and network byte order
Contents
Bobcat
Bobcat is an acronym of `Brokken’s Own Base Classes And Templates’.
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;
Bugs
None Reported.
Copyright
This is free software, distributed under the terms of the GNU General Public License (GPL).
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, hostbyteorder 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 structsockaddr_in data
member. A structsockaddr_in is the data type used to represent socket addresses in the Internet
namespace. It has the following members:
o sa_family_tsin_family:
This identifies the address family or format of the socket address. It holds the value AF_INET.
o structin_addrsin_addr:
This is the Internet address of the host machine stored as a binary value.
o size_tshortintsin_port:
This field holds the port number.
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
Inherits From
-
Member Functions
o uint16_tport()const:
Accessor returning the object’s port value.
o std::stringdottedDecimalAddress()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.
o size_tsize()const:
Accessor returning the size of the object’s sockaddr_in (address) information.
o sockaddrconst*sockaddrPtr()const:
Accessor returning the pointer to the object’s sockaddr data member.
o sockaddr_inconst*sockaddr_inPtr()const:
Accessor returning the pointer to the object’s sockaddr_in data member.
Name
FBB::InetAddress - Converting between host byte order and network byte order
Namespace
FBB
All constructors, members, operators and manipulators, mentioned in this man-page, are defined in the
namespace FBB.
Protected Constructors
o InetAddress(std::stringconst&host,uint16_tport):
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.
o InetAddress(uint16_tport):
This constructor constructs the `generic’ address information that is used when constructing, e.g.
server sockets.
o InetAddress(sockaddr_inconst&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.
Protected Member Functions
o sockaddr*sockaddrPtr():
This member returns the object’s address information as a pointer to a modifiable structsockaddr.
This allows (contrary to the public member having the same name) derived objects to manipulate the
object’s address information directly.
o sockaddr_in*sockaddr_inPtr():
This member returns the object’s address information as a pointer to a modifiable structsockaddr_in. This allows (contrary to the public member having the same name) derived objects to
manipulate the object’s address information directly.
See Also
bind(1), bobcat(7), gethostent(3bobcat), socketbase(3bobcat)
Synopsis
#include<bobcat/inetaddress>
Linking option: -lbobcat