#include <OSGSocketAddress.h>
Public Types | |
| enum | Type { ANY, BROADCAST, MULTICAST } |
| typedef struct socketaddr | SocketAddrT |
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 | |
| struct 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 | |
| void | operator= (const SocketAddress &other) const |
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 |
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.
typedef struct socketaddr osg::SocketAddress::SocketAddrT [read] |
Definition at line 71 of file OSGSocketAddress.h.
| SocketAddress::SocketAddress | ( | const char * | host, | |
| int | port = 0 | |||
| ) |
Constructor. Create a socket address for the given port and host.
Definition at line 89 of file OSGSocketAddress.cpp.
References _sockaddr, setHost(), and setPort().
00089 : 00090 _sockaddr(NULL) 00091 { 00092 _sockaddr = new sockaddr_in; 00093 00094 memset(_sockaddr,0,sizeof(sockaddr_in)); 00095 00096 _sockaddr->sin_family = AF_INET; 00097 00098 if(host) 00099 setHost(std::string(host)); 00100 00101 setPort(port); 00102 }
| SocketAddress::SocketAddress | ( | SocketAddress::Type | type = ANY, |
|
| int | port = 0 | |||
| ) |
Constructor. Create a socket with predefined type. E.g. ANY is used to bind a socket to all interfaces. BROADCAST chreates a broadcast address
Definition at line 108 of file OSGSocketAddress.cpp.
References _sockaddr, ANY, BROADCAST, osg::osghtonl(), and setPort().
00108 : 00109 _sockaddr(NULL) 00110 { 00111 _sockaddr = new sockaddr_in; 00112 00113 memset(_sockaddr,0,sizeof(sockaddr_in)); 00114 00115 _sockaddr->sin_family = AF_INET; 00116 00117 switch(type) 00118 { 00119 case ANY: _sockaddr->sin_addr.s_addr = osghtonl(INADDR_ANY); 00120 break; 00121 case BROADCAST: _sockaddr->sin_addr.s_addr = osghtonl(INADDR_BROADCAST); 00122 // setHost(std::string("192.168.0.255")); 00123 break; 00124 default: _sockaddr->sin_addr.s_addr = osghtonl(INADDR_ANY); 00125 } 00126 setPort(port); 00127 }
| SocketAddress::SocketAddress | ( | const SocketAddress & | source | ) |
| SocketAddress::~SocketAddress | ( | ) | [virtual] |
Destructor
Definition at line 141 of file OSGSocketAddress.cpp.
References _sockaddr.
00142 { 00143 delete _sockaddr; 00144 }
| sockaddr * SocketAddress::getSockAddr | ( | void | ) | const [read] |
Get a pointer to the sockaddr struct
Definition at line 226 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().
00227 { 00228 return const_cast<struct sockaddr *>( 00229 reinterpret_cast<const struct sockaddr *>(_sockaddr)); 00230 }
| int SocketAddress::getSockAddrSize | ( | void | ) | const |
Get the size of the sockaddr struct
Definition at line 234 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().
| void SocketAddress::setPort | ( | int | port | ) |
Set the port number
Definition at line 151 of file OSGSocketAddress.cpp.
References _sockaddr, and osg::osghtons().
Referenced by osg::GroupMCastConnection::initialize(), and SocketAddress().
| void SocketAddress::setHost | ( | const std::string & | host | ) |
Set host name
Definition at line 158 of file OSGSocketAddress.cpp.
References _sockaddr.
Referenced by osg::GroupMCastConnection::initialize(), and SocketAddress().
00159 { 00160 struct hostent *hent; 00161 char const *c; 00162 00163 // number or name ? 00164 for(c=host.c_str(); 00165 *c!='\0' && (isdigit(*c) || *c == '.'); 00166 c++); 00167 if(! *c ) 00168 { 00169 // inet_aton(const char *cp, struct in_addr *pin); 00170 00171 // ip number was given 00172 _sockaddr->sin_addr.s_addr = inet_addr(host.c_str()); 00173 } 00174 else 00175 { 00176 // get address of host by name 00177 hent = gethostbyname(host.c_str()); 00178 if(hent == NULL) 00179 { 00180 throw SocketHostError("gethostbyname()"); 00181 } 00182 // set address 00183 _sockaddr->sin_addr = *(struct in_addr *) hent->h_addr; 00184 } 00185 }
| int SocketAddress::getPort | ( | void | ) | const |
Get port number
Definition at line 241 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().
| std::string SocketAddress::getHost | ( | void | ) | const |
Get host as number std::string
Definition at line 189 of file OSGSocketAddress.cpp.
References _sockaddr.
Referenced by osg::PointSockConnection::bind(), osg::GroupSockConnection::bind(), osg::ClusterWindow::init(), osg::PointMCastConnection::initialize(), osg::GroupMCastConnection::initialize(), and osg::GroupMCastConnection::sendQueue().
00190 { 00191 return std::string(inet_ntoa(_sockaddr->sin_addr)); 00192 }
| std::string SocketAddress::getHostByName | ( | void | ) | const |
Get host as name. If not found, return as number
Definition at line 196 of file OSGSocketAddress.cpp.
References _sockaddr, getSockAddr(), and getSockAddrSize().
00197 { 00198 struct hostent *hent; 00199 std::string result; 00200 00201 hent=gethostbyaddr((SocketAddrT*)getSockAddr(), 00202 getSockAddrSize(),AF_INET); 00203 if(hent == NULL) 00204 { 00205 // if no host assigned or host unknown 00206 // then return ip address 00207 result=inet_ntoa(_sockaddr->sin_addr); 00208 } 00209 else 00210 { 00211 result=hent->h_name; 00212 } 00213 return result; 00214 }
| bool SocketAddress::isMulticast | ( | void | ) |
Returns true, if this is a multicast address
Definition at line 218 of file OSGSocketAddress.cpp.
References _sockaddr, and osg::osgntohl().
Referenced by osg::ClusterServer::acceptClient().
00219 { 00220 UInt32 addr = osgntohl(_sockaddr->sin_addr.s_addr); 00221 return addr & 0xC0000; 00222 }
| void SocketAddress::operator= | ( | const SocketAddress & | other | ) | const |
| bool SocketAddress::operator== | ( | const SocketAddress & | other | ) | const |
| bool SocketAddress::operator!= | ( | const SocketAddress & | other | ) | const |
| bool SocketAddress::operator< | ( | const SocketAddress & | other | ) | const |
compare less
Definition at line 274 of file OSGSocketAddress.cpp.
References _sockaddr.
00275 { 00276 return _sockaddr->sin_addr.s_addr < other._sockaddr->sin_addr.s_addr || 00277 ( 00278 _sockaddr->sin_addr.s_addr == other._sockaddr->sin_addr.s_addr && 00279 _sockaddr->sin_port < other._sockaddr->sin_port 00280 ); 00281 }
struct sockaddr_in* osg::SocketAddress::_sockaddr [read, protected] |
Definition at line 132 of file OSGSocketAddress.h.
Referenced by getHost(), getHostByName(), getPort(), getSockAddr(), isMulticast(), operator<(), operator=(), operator==(), setHost(), setPort(), SocketAddress(), and ~SocketAddress().
1.5.5