00001 #include "ip4address.h"
00002
00003 namespace n2nc {
00004 namespace net {
00005
00006 IP4Address::IP4Address() : Address()
00007 {
00008 m_af=AF_INET;
00009
00010 }
00011
00012 IP4Address::IP4Address(std::string &addr) : Address()
00013 {
00014 Address* ret ;
00015
00016 ret = n2nc::net::Resolver::getAddressByFQDN(addr,false);
00017 if(!ret) {
00018
00019 throw ;
00020 }
00021 this->m_addr = ((IP4Address*)ret)->m_addr ;
00022 this->m_af=AF_INET;
00023 delete ret;
00024 }
00025
00026 IP4Address::IP4Address(struct in_addr *addr) : Address()
00027 {
00028
00029
00030 this->m_af=AF_INET;
00031 this->m_addr = *addr ;
00032 }
00033
00034
00035
00036 std::string IP4Address::toString() const{
00037 struct sockaddr_in t_addr;
00038 char s_ip[16];
00039 int ret ;
00040 memset(&t_addr,0, sizeof(t_addr));
00041 t_addr.sin_addr = this->m_addr ;
00042 t_addr.sin_family = AF_INET ;
00043 ret = getnameinfo((struct sockaddr*)&t_addr,sizeof(t_addr),s_ip,16,NULL,0,NI_NUMERICHOST);
00044 std::string ret_ip(s_ip);
00045 return ret_ip ;
00046 }
00047
00048 void IP4Address::getRawAddress(void **addr,size_t *len){
00049 *addr = (void*)&((IP4Address*)this)->m_addr ;
00050 *len = sizeof(((IP4Address*)this)->m_addr);
00051 }
00052
00053
00054 IP4Address::~IP4Address()
00055 {
00056 }
00057
00058
00059 }
00060 }