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( );
}
}
{
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) ;
}