#include <OSGSocketAddress.h>
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 |
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.
|
|
Definition at line 71 of file OSGSocketAddress.h. |
|
|
Definition at line 64 of file OSGSocketAddress.h.
|
|
||||||||||||
|
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 }
|
|
||||||||||||
|
type |
|
|
copy Constructor Definition at line 115 of file OSGSocketAddress.cpp. References _sockaddr.
|
|
|
Destructor Definition at line 122 of file OSGSocketAddress.cpp.
|
|
|
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 }
|
|
|
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().
|
|
|
Set the port number Definition at line 131 of file OSGSocketAddress.cpp. References _sockaddr, and osg::osghtons(). Referenced by osg::GroupMCastConnection::initialize(), and SocketAddress().
|
|
|
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 }
|
|
|
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().
|
|
|
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 }
|
|
|
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 }
|
|
|
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 }
|
|
|
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 }
|
|
|
compare not equal Definition at line 239 of file OSGSocketAddress.cpp.
|
|
|
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 }
|
|
|
Definition at line 125 of file OSGSocketAddress.h. Referenced by getHost(), getHostByName(), getPort(), getSockAddr(), isMulticast(), operator<(), operator==(), setHost(), setPort(), and SocketAddress(). |
1.4.3