获取本地主机的一些信息

 

void CAnalyzeProxyLog::GetMachineDetail(void)
{
 char  name[255]; 
 PHOSTENT pHostInfo; 

 InitSocket () ;
 
 char strUserName[255] ;
 unsigned long length = sizeof(strUserName) ;
 if (GetUserName(strUserName, &length))
 {
  m_ProcessUser.assign(strUserName, strlen(strUserName)) ;
 }
 else
 {
  runtime_error ("获取进程用户名失败") ;
 }
}

void CAnalyzeProxyLog::InitSocket()
{
 WORD  wVersionRequested; 
 WSADATA  wsaData; 
 char  name[255];  
 int err;

 PHOSTENT  hostinfo; 
 wVersionRequested = MAKEWORD( 1, 1 );//版本号1.1

 //1.加载套接字库
 err = WSAStartup( wVersionRequested, &wsaData );
 if ( err != 0 )
 {
  throw runtime_error ("记载套接字库失败") ;
 }

 //判断是否我们请求的winsocket版本,如果不是
 //则调用WSACleanup终止winsocket的使用并返回            

 if ( LOBYTE( wsaData.wVersion ) != 1 ||
  HIBYTE( wsaData.wVersion ) != 1 )
 {
   WSACleanup( );
   throw runtime_error ("请求winsock版本失败") ;
 }///...if

 if  ( err  ==  0  ) 
 { 
  if(  gethostname  (  name,  sizeof(name))  ==  0) 
  {
   m_HostName.assign(name,strlen(name)) ;
   if((hostinfo  =  gethostbyname(name))  !=  NULL) 
   { 
    m_ip  =  inet_ntoa  (*(struct  in_addr  *)*hostinfo->h_addr_list); 
   }
   else
   {
    throw runtime_error ("获取主机IP地址失败") ;
   }
  }
  else
  {

   throw runtime_error ("获取主机名字失败") ;
  }

  WSACleanup(  ); 
 }
}

void CAnalyzeProxyLog::GetCurrentTime(void)
{
 time_t timer;
 time(&timer);
 tm* t_tm   = localtime(&timer);
 int temp_year  = t_tm->tm_year + 1900 ;
 m_year    = FromIntToString (temp_year) ;
 int temp_month  = t_tm->tm_mon + 1 ;
 m_month    = FromIntToString (temp_month) ;
 int temp_day  = t_tm->tm_mday ;
 m_day    = FromIntToString (temp_day) ;
 int temp_hour  = t_tm->tm_hour ;
 m_hour    = FromIntToString (temp_hour) ;
 int temp_minute  = t_tm->tm_min ;
 m_minute   = FromIntToString (temp_minute) ;
 int temp_second  = t_tm->tm_sec ;
 m_second   = FromIntToString (temp_second) ;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值