Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

osg::SocketAddress Class Reference
[Network]

Network address. More...

#include <OSGSocketAddress.h>

List of all members.

Public Types

typedef socketaddr SocketAddrT
enum  Type { ANY, BROADCAST, MULTICAST }

Public Member Functions

Constructors
SocketAddress (const char *host, int port=0)
 SocketAddress (Type type=ANY, int port=0)
 SocketAddress (const SocketAddress &source)
Destructor
*virtual ~SocketAddress ()
Get/Set
*sockaddr * getSockAddr (void) const
int getSockAddrSize (void) const
void setPort (int port)
void setHost (const std::string &host)
int getPort (void) const
std::string getHost (void) const
std::string getHostByName (void) const
Type querry
*bool isMulticast (void)
Comparision
*bool operator== (const SocketAddress &other) const
bool operator!= (const SocketAddress &other) const
bool operator< (const SocketAddress &other) const

Protected Attributes

static element
*struct sockaddr_in _sockaddr


Detailed Description

The class SocketAddress holds an ip-address and a socket port number. It is used to connect, and sendTo Sockets.

Usage:

 SocketAddress a("colossus.world.com",3334);
 socket.bind(a);
 cout << a.getHost() << endl;
 cout << a.getPort() << endl;
 

Definition at line 58 of file OSGSocketAddress.h.


Member Typedef Documentation

typedef struct socketaddr osg::SocketAddress::SocketAddrT
 

Definition at line 71 of file OSGSocketAddress.h.


Member Enumeration Documentation

enum osg::SocketAddress::Type
 

Enumerator:
ANY 
BROADCAST 
MULTICAST 

Definition at line 64 of file OSGSocketAddress.h.

00064 { ANY,BROADCAST,MULTICAST };


Constructor & Destructor Documentation

SocketAddress::SocketAddress const char *  host,
int  port = 0
 

type

Definition at line 85 of file OSGSocketAddress.cpp.

References _sockaddr, setHost(), and setPort().

00086 {
00087     memset(&_sockaddr,0,sizeof(_sockaddr));
00088     _sockaddr.sin_family = AF_INET;
00089     if(host)
00090         setHost(std::string(host));
00091     setPort(port);
00092 }

osg::SocketAddress::SocketAddress Type  type = ANY,
int  port = 0
 

type

SocketAddress::SocketAddress const SocketAddress source  ) 
 

copy Constructor

Definition at line 115 of file OSGSocketAddress.cpp.

References _sockaddr.

00116 {
00117     _sockaddr = source._sockaddr;
00118 }

SocketAddress::~SocketAddress  )  [virtual]
 

Destructor

Definition at line 122 of file OSGSocketAddress.cpp.

00123 {
00124 }


Member Function Documentation

sockaddr * SocketAddress::getSockAddr void   )  const
 

Get a pointer to the sockaddr struct

Definition at line 206 of file OSGSocketAddress.cpp.

References _sockaddr.

Referenced by osg::StreamSocket::acceptFrom(), osg::Socket::bind(), osg::Socket::connect(), osg::Socket::getAddress(), getHostByName(), osg::DgramSocket::join(), osg::DgramSocket::leave(), osg::DgramSocket::peekFrom(), osg::DgramSocket::recvFrom(), osg::DgramSocket::sendTo(), and osg::DgramSocket::setMCastInterface().

00207 {
00208     return const_cast<struct sockaddr *>(
00209         reinterpret_cast<const struct sockaddr *>(&_sockaddr));
00210 }

int SocketAddress::getSockAddrSize void   )  const
 

Get the size of the sockaddr struct

Definition at line 214 of file OSGSocketAddress.cpp.

Referenced by osg::StreamSocket::acceptFrom(), osg::Socket::bind(), osg::Socket::connect(), osg::Socket::getAddress(), getHostByName(), osg::DgramSocket::peekFrom(), osg::DgramSocket::recvFrom(), osg::DgramSocket::sendTo(), and osg::DgramSocket::setMCastInterface().

00215 {
00216     return sizeof(struct sockaddr_in);
00217 }

void SocketAddress::setPort int  port  ) 
 

Set the port number

Definition at line 131 of file OSGSocketAddress.cpp.

References _sockaddr, and osg::osghtons().

Referenced by osg::GroupMCastConnection::initialize(), and SocketAddress().

00132 {
00133     _sockaddr.sin_port = osghtons( port );
00134 }

void SocketAddress::setHost const std::string &  host  ) 
 

Set host name

Definition at line 138 of file OSGSocketAddress.cpp.

References _sockaddr.

Referenced by osg::GroupMCastConnection::initialize(), and SocketAddress().

00139 {
00140     struct hostent *hent;
00141     char const *c;
00142 
00143     // number or name ?
00144     for(c=host.c_str();
00145         *c!='\0' && (isdigit(*c) || *c == '.');
00146         c++);
00147     if(! *c )
00148     {
00149         // inet_aton(const char *cp, struct in_addr *pin);
00150 
00151         // ip number was given
00152         _sockaddr.sin_addr.s_addr = inet_addr(host.c_str());
00153     }
00154     else
00155     {
00156         // get address of host by name
00157         hent = gethostbyname(host.c_str());
00158         if(hent == NULL)
00159         {
00160             throw SocketHostError("gethostbyname()");
00161         }
00162         // set address
00163         _sockaddr.sin_addr = *(struct in_addr *) hent->h_addr;
00164     }
00165 }

int SocketAddress::getPort void   )  const
 

Get port number

Definition at line 221 of file OSGSocketAddress.cpp.

References _sockaddr, and osg::osgntohs().

Referenced by osg::PointSockConnection::bind(), osg::GroupSockConnection::bind(), osg::PointSockPipeline::initialize(), osg::PointMCastConnection::initialize(), osg::GroupMCastConnection::initialize(), and osg::GroupMCastConnection::sendQueue().

00222 {
00223     return osgntohs(_sockaddr.sin_port);
00224 }

std::string SocketAddress::getHost void   )  const
 

Get host as number std::string

Definition at line 169 of file OSGSocketAddress.cpp.

References _sockaddr.

Referenced by osg::PointSockConnection::bind(), osg::GroupSockConnection::bind(), osg::GroupMCastConnection::initialize(), and osg::GroupMCastConnection::sendQueue().

00170 {
00171     return std::string(inet_ntoa(_sockaddr.sin_addr));
00172 }

std::string SocketAddress::getHostByName void   )  const
 

Get host as name. If not found, return as number

Definition at line 176 of file OSGSocketAddress.cpp.

References _sockaddr, getSockAddr(), and getSockAddrSize().

00177 {
00178     struct hostent *hent;
00179     std::string result;
00180 
00181     hent=gethostbyaddr((SocketAddrT*)getSockAddr(),
00182                        getSockAddrSize(),AF_INET);
00183     if(hent == NULL)
00184     {
00185         // if no host assigned or host unknown
00186         // then return ip address
00187         result=inet_ntoa(_sockaddr.sin_addr);
00188     }
00189     else
00190     {
00191         result=hent->h_name;
00192     }
00193     return result;
00194 }

bool SocketAddress::isMulticast void   ) 
 

Returns true, if this is a multicast address

Definition at line 198 of file OSGSocketAddress.cpp.

References _sockaddr, and osg::osgntohl().

Referenced by osg::ClusterServer::acceptClient().

00199 {
00200     UInt32 addr = osgntohl(_sockaddr.sin_addr.s_addr);
00201     return addr & 0xC0000;
00202 }

bool SocketAddress::operator== const SocketAddress other  )  const
 

compare equal

Definition at line 231 of file OSGSocketAddress.cpp.

References _sockaddr.

00232 {
00233     return _sockaddr.sin_addr.s_addr == other._sockaddr.sin_addr.s_addr &&
00234            _sockaddr.sin_port        == other._sockaddr.sin_port;
00235 }

bool SocketAddress::operator!= const SocketAddress other  )  const
 

compare not equal

Definition at line 239 of file OSGSocketAddress.cpp.

00240 {
00241     return ! (*this == other);
00242 }

bool SocketAddress::operator< const SocketAddress other  )  const
 

compare less

Definition at line 246 of file OSGSocketAddress.cpp.

References _sockaddr.

00247 {
00248     return _sockaddr.sin_addr.s_addr < other._sockaddr.sin_addr.s_addr ||
00249     (
00250         _sockaddr.sin_addr.s_addr == other._sockaddr.sin_addr.s_addr &&
00251         _sockaddr.sin_port        <  other._sockaddr.sin_port
00252     );
00253 }


Member Data Documentation

* struct sockaddr_in osg::SocketAddress::_sockaddr [protected]
 

Definition at line 125 of file OSGSocketAddress.h.

Referenced by getHost(), getHostByName(), getPort(), getSockAddr(), isMulticast(), operator<(), operator==(), setHost(), setPort(), and SocketAddress().


The documentation for this class was generated from the following files:
Generated on Thu Aug 25 04:12:57 2005 for OpenSG by  doxygen 1.4.3