SourcePro® API Reference Guide

 
List of all members | Public Member Functions | Static Public Member Functions | Related Functions
RWInet6Addr Class Reference

Encapsulates a complete IPv6 address. More...

#include <rw/network/RWInet6Addr.h>

Inheritance diagram for RWInet6Addr:
RWSockAddrBase

Public Member Functions

 RWInet6Addr ()
 
 RWInet6Addr (const RWInetPort &port)
 
 RWInet6Addr (int port)
 
 RWInet6Addr (const RWInetPort &port, const RWInet6Host &host, unsigned scope=0, short type=SOCK_STREAM, short protocol=0)
 
 RWInet6Addr (const sockaddr_in6 &addr, short type=SOCK_STREAM, short protocol=0)
 
 RWInet6Addr (const RWCString &s)
 
virtual RWSockType addressType () const
 
virtual sockaddr * asSockaddr () const
 
RWInet6Host getHost () const
 
RWInetPort getPort () const
 
unsigned getScope () const
 
virtual RWCString id (unsigned level=0) const
 
bool operator!= (const RWInet6Addr &rhs) const
 
bool operator== (const RWInet6Addr &rhs) const
 
virtual void prepare () const
 
virtual size_t sockaddrSize () const
 
- Public Member Functions inherited from RWSockAddrBase
virtual ~RWSockAddrBase ()
 
int getDomain () const
 
int getFamily () const
 
RWCString getFamilyName () const
 
int getProtocol () const
 
int getType () const
 
virtual const RWSockAddrBasemyAddress () const
 
virtual operator RWCString () const
 

Static Public Member Functions

static RWInet6Addr as (const RWSockAddrBase &)
 
static bool is (const RWSockAddrBase &)
 

Related Functions

(Note that these are not member functions.)

std::istream & operator>> (std::istream &, RWInet6Addr &)
 

Detailed Description

Encapsulates a complete IPv6 address that includes type information, host, port, and scope.

Example
RWInet6Addr addr(8001, "0::1");

Constructor & Destructor Documentation

RWInet6Addr::RWInet6Addr ( )

Constructs an address for an IPv6 Internet connection. The constructor that takes only a port argument creates a special address used to bind to any of the network interfaces on the machine on which the process is running. This is done, for example, when you are setting a server address. An address created using the default constructor binds to an arbitrary port number on any network interface on the local machine. These constructors do not block.

RWInet6Addr::RWInet6Addr ( const RWInetPort port)

Constructs an address for an IPv6 Internet connection. The constructor that takes only a port argument creates a special address used to bind to any of the network interfaces on the machine on which the process is running. This is done, for example, when you are setting a server address. An address created using the default constructor binds to an arbitrary port number on any network interface on the local machine. These constructors do not block.

RWInet6Addr::RWInet6Addr ( int  port)

Constructs an address for an IPv6 Internet connection. The constructor that takes only a port argument creates a special address used to bind to any of the network interfaces on the machine on which the process is running. This is done, for example, when you are setting a server address. An address created using the default constructor binds to an arbitrary port number on any network interface on the local machine. These constructors do not block.

RWInet6Addr::RWInet6Addr ( const RWInetPort port,
const RWInet6Host host,
unsigned  scope = 0,
short  type = SOCK_STREAM,
short  protocol = 0 
)

Constructs an address for an IPv6 Internet connection. The constructor that takes only a port argument creates a special address used to bind to any of the network interfaces on the machine on which the process is running. This is done, for example, when you are setting a server address. An address created using the default constructor binds to an arbitrary port number on any network interface on the local machine. These constructors do not block.

RWInet6Addr::RWInet6Addr ( const sockaddr_in6 &  addr,
short  type = SOCK_STREAM,
short  protocol = 0 
)

Constructs an address for an IPv6 Internet connection. The constructor that takes only a port argument creates a special address used to bind to any of the network interfaces on the machine on which the process is running. This is done, for example, when you are setting a server address. An address created using the default constructor binds to an arbitrary port number on any network interface on the local machine. These constructors do not block.

RWInet6Addr::RWInet6Addr ( const RWCString s)

Constructs an address from the ASCII string s, where s has the form type:host%scope:port. type, host, and scope are optional. If type is supplied, it must be stream for a stream socket address, or dgram for a datagram socket. host should be wrapped in square brackets ('[' and ']') if the string should contain an IPv6 hex address. scope is only required if its value is nonzero. If not specified, type defaults to a value of stream, host to a value of "ANY" and scope to a value of 0.

Member Function Documentation

virtual RWSockType RWInet6Addr::addressType ( ) const
virtual

Returns the address type.

Implements RWSockAddrBase.

static RWInet6Addr RWInet6Addr::as ( const RWSockAddrBase )
static

Casts addr to RWInet6Addr, if appropriate. Otherwise, it throws an RWSockWrongAddressTypeError exception.

virtual sockaddr* RWInet6Addr::asSockaddr ( ) const
virtual

Returns a pointer to an internal representation of the address that was cast to a sockaddr structure, as defined by the sockets and TLI APIs. (TLI is the UNIX System V network communication interface.) The pointer is to an internal data structure, so it becomes invalid if self is changed in any way or goes out of scope. If the address has no representation as a sockaddr, a null pointer is returned.

Implements RWSockAddrBase.

RWInet6Host RWInet6Addr::getHost ( ) const
inline

Returns the host portion of the address.

RWInetPort RWInet6Addr::getPort ( ) const
inline

Returns the port portion of the address.

unsigned RWInet6Addr::getScope ( ) const
inline

Returns the scope portion of the address.

virtual RWCString RWInet6Addr::id ( unsigned  level = 0) const
virtual

Returns a string describing self. The verbosity of the output is controlled by level, where level=0 is the most basic output, and level=9 is the most verbose.

Grammar Definitions

type ::= <the result of addressType().id(level)>
host-value ::= <the result of getHost().id(level)>
hostname ::= host-value | See Note Below
port ::= <the result of getPort().id(level)>
scope-value ::= <the result of getScope() if non-zero>
scope ::= "%" scope-value
Note

When the result of RWInet6Host::id() is interpreted by RWInet6Addr::id(), the grammar of RWInet6Host is updated as follows:

    host ::= hostname | '[' ip-address ']'

The extra '[' and ']' isolate the ':' that are a part of the address from the ':' delimiter used in RWInet6Addr's representation.

level Calls prepare() Output Grammar Sample Output for id(level) given RWInet6Addr(80, "::1")
0 hostname (scope)? ":" port [::1]:80
1 hostname (scope)? ":" port [::1]:80
2 type ":" hostname (scope)? ":" port inet6:stream:[::1]:80
3 X hostname (scope)? ":" port server.example.com:80
4 X hostname (scope)? ":" port server.example.com(::1):80(http)
5 X hostname (scope)? ":" port server.example.com(::1):80(http)
6 X type ":" hostname (scope)? ":" port inet6:stream:server.example.com:80
7 X type ":" hostname (scope)? ":" port inet6:stream:server.example.com(::1):80(http)
8 X type ":" hostname (scope)? ":" port inet6:stream:server.example.com(::1):80(http)
9 X type ":" hostname (scope)? ":" port inet6:stream:server.example.com(::1):80(http,www,www-http)

Implements RWSockAddrBase.

static bool RWInet6Addr::is ( const RWSockAddrBase )
static

Returns true if addr is an RWInet6Addr.

bool RWInet6Addr::operator!= ( const RWInet6Addr rhs) const

Comparison operator.

bool RWInet6Addr::operator== ( const RWInet6Addr rhs) const

Comparison operator.

virtual void RWInet6Addr::prepare ( ) const
virtual

Ensures that future calls do not block on this address. If necessary, this function looks up the IP address and port number from the host name and service name. It is not necessary to call prepare(), but if you don't, future calls may block. No exceptions are thrown from prepare().

Reimplemented from RWSockAddrBase.

virtual size_t RWInet6Addr::sockaddrSize ( ) const
virtual

Returns the size of an internal representation of the socket address defined by the sockets.

Implements RWSockAddrBase.

Friends And Related Function Documentation

std::istream & operator>> ( std::istream &  ,
RWInet6Addr  
)
related

Reads a representation of addr from strm. The representation should be of the form produced by id() with level=2.

Copyright © 2022 Rogue Wave Software, Inc., a Perforce company. All Rights Reserved.