Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

SocketAddress.cpp

Go to the documentation of this file.
00001 #include "headers.h"
00002 
00007 
00008 
00012 SocketAddress::SocketAddress() {
00013     m_sockAddrStructLen = sizeof(struct sockaddr_in);
00014     setIpAddress(IpAddress((unsigned long)0));
00015     setPort((unsigned short)0);
00016 } // ctor
00017 
00018 
00022 SocketAddress::SocketAddress(IpAddress ipAddr, unsigned short port) {
00023     m_sockAddrStructLen = sizeof(struct sockaddr_in);
00024     setIpAddress(ipAddr);
00025     setPort(port);
00026 } // ctor
00027 
00028 
00032 SocketAddress::SocketAddress(struct sockaddr_in* value) {
00033     m_sockAddrStructLen = sizeof(struct sockaddr_in);
00034     setSocketAddress(value);
00035 } // ctor
00036 
00037 
00041 SocketAddress::SocketAddress(const SocketAddress& value) {
00042     m_ipAddr = value.m_ipAddr;
00043     m_port = value.m_port;
00044     memcpy(&m_sockAddrStruct, &value.m_sockAddrStruct, sizeof(struct sockaddr_in));
00045     m_sockAddrStructLen = value.m_sockAddrStructLen;
00046 #ifdef DEBUG_ON
00047     toCStr();
00048 #endif
00049 } // ctor
00050 
00051 
00052 SocketAddress::~SocketAddress() {
00053 } // dtor
00054 
00055 
00062 void 
00063 SocketAddress::initSockAddr(struct sockaddr_in* sockAddr, unsigned int ipAddr, int port) {
00064         memset(sockAddr, '\0', sizeof(struct sockaddr_in));
00065         sockAddr->sin_family      = AF_INET;
00066         sockAddr->sin_addr.s_addr = ipAddr; // Server IP 
00067         sockAddr->sin_port        = htons(port); // Server Port number 
00068 } // fn initSockAddr 
00069 
00070 
00071 void
00072 SocketAddress::setIpAddress(const IpAddress& value) {
00073     m_ipAddr = value;
00074     initSockAddr(&m_sockAddrStruct, m_ipAddr.getUnsignedLongForm(), m_port);
00075 #ifdef DEBUG_ON
00076     toCStr();
00077 #endif
00078 } // fn setIpAddress
00079 
00080 
00081 void 
00082 SocketAddress::setSocketAddress(struct sockaddr_in* value) {
00083     memcpy(&m_sockAddrStruct, value, sizeof(struct sockaddr_in));
00084     m_sockAddrStructLen = sizeof(struct sockaddr_in);
00085     m_ipAddr.setIpAddress(m_sockAddrStruct.sin_addr);
00086     m_port = m_sockAddrStruct.sin_port;
00087 #ifdef DEBUG_ON
00088     toCStr();
00089 #endif
00090 } // fn setSocketAddress
00091 
00092 
00093 void 
00094 SocketAddress::setPort(unsigned short value) {
00095     m_port = value;
00096     initSockAddr(&m_sockAddrStruct, m_ipAddr.getUnsignedLongForm(), m_port);
00097 #ifdef DEBUG_ON
00098     toCStr();
00099 #endif
00100 } // fn setPort
00101 
00102 
00103 void
00104 SocketAddress::setPort(const char* value) {
00105     setPort(atoi(value));
00106 } // fn setPort
00107 
00108 
00109 void
00110 SocketAddress::setPort(string value) {
00111     setPort(value.c_str());
00112 } // fn setPort
00113 
00114 
00120 struct sockaddr_in* 
00121 SocketAddress::getSockAddrStruct() {
00122     return &m_sockAddrStruct;
00123 } // fn getSockAddrStruct
00124 
00125 
00126 OS_SPEC_SOCKLEN*
00127 SocketAddress::getSockAddrStructLen() {
00128     return &m_sockAddrStructLen;
00129 }
00130 
00131 
00132 unsigned short 
00133 SocketAddress::getPort() {
00134     return m_port;
00135 } // fn getPort
00136  
00137 
00138 IpAddress 
00139 SocketAddress::getIpAddress() {
00140     return m_ipAddr;
00141 } // fn getIpAddress
00142 
00143 
00147 void 
00148 SocketAddress::toStream(std::ostream& out) {
00149     out << m_ipAddr << ":" << m_port;
00150 } // fn toStream
00151 
00152 
00157 const char*
00158 SocketAddress::toCStr() {
00159     OS_SPEC_SNPRINTF(m_cstr, MAX_IP_ADDR_STR + 6, "%s:%d", m_ipAddr.toCStr(), m_port);
00160     return m_cstr;
00161 } // fn toCStr
00162 
00163 
00167 bool
00168 SocketAddress::isZero() {
00169     return (m_ipAddr.isZero() || (m_port == 0));
00170 } // fn isZero
00171 
00172 
00181 bool
00182 SocketAddress::read(std::istream& in) {
00183     char tmpStr[MAX_IP_ADDR_STR];
00184     in.getline(tmpStr, MAX_IP_ADDR_STR, ':');
00185     IpAddress tmpIp(&tmpStr[0]);
00186     setIpAddress(tmpIp);
00187 
00188     unsigned short port;
00189     in >> port;
00190     setPort(port);
00191 
00192 #ifdef DEBUG_ON
00193     toCStr();
00194 #endif
00195     return (!in.fail() && !in.eof());
00196 } // fn read
00197 
00198 
00202 bool
00203 SocketAddress::read(const char* buf) {
00204     stringstream s(buf);
00205     return this->read(s);
00206 } // fn read
00207 
00208 
00212 bool
00213 SocketAddress::read(string buf) {
00214     stringstream s(buf);
00215     return this->read(s);
00216 } // fn read
00217 

Generated at Thu Jul 11 13:31:52 2002 for Peekabooty by doxygen1.2.9 written by Dimitri van Heesch, © 1997-2001