inetaddress.3bobcat

Langue: en

Version: 346949 (ubuntu - 24/10/10)

Section: 3 (Bibliothèques de fonctions)

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:

o
sa_family_t sin_family:
This identifies the address family or format of the socket address. It holds the value AF_INET.
o
struct in_addr sin_addr:
This is the Internet address of the host machine stored as a binary value.
o
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

o
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::Errno exception is thrown if the address could not be determined.
o
InetAddress(uint16_t port):
This constructor constructs the `generic' address information that is used when constructing, e.g. server sockets.
o
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 constructor is available.

MEMBER FUNCTIONS

o
uint16_t port() const:
Accessor returning the object's port value.
o
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::Errno object is thrown.
o
size_t size() const:
Accessor returning the size of the object's sockaddr_in (address) information.
o
sockaddr const *sockaddrPtr() const:
Accessor returning the pointer to the object's sockaddr data member.
o
sockaddr_in const *sockaddr_inPtr() const:
Accessor returning the pointer to the object's sockaddr_in data member.

PROTECTED MEMBER FUNCTIONS

o
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.
o
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/errno>
 
 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;
 
     return 0;
 }
 catch (Errno 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.

DISTRIBUTION FILES

o
bobcat_2.08.01-x.dsc: detached signature;
o
bobcat_2.08.01-x.tar.gz: source archive;
o
bobcat_2.08.01-x_i386.changes: change log;
o
libbobcat1_2.08.01-x_*.deb: debian package holding the libraries;
o
libbobcat1-dev_2.08.01-x_*.deb: debian package holding the libraries, headers and manual pages;
o
http://sourceforge.net/projects/bobcat: public archive location;

BOBCAT

Bobcat is an acronym of `Brokken's Own Base Classes And Templates'. This is free software, distributed under the terms of the GNU General Public License (GPL).

AUTHOR

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