//************************************************************************* // 函数名: GetAppPath // 返回值: const char* --返回程序所在目录 // 描述: 获取程序所在目录 //************************************************************************* const char* DPC::GetAppPath() { static std::string strPath(""); if(strPath.empty()) { char szFileName[MAX_PATH]; GetModuleFileName(NULL, szFileName, sizeof(szFileName)); strPath = szFileName; size_t nPos = strPath.find_last_of('\'); if (nPos != std::string::npos){ strPath = strPath.substr(0, nPos); } } return strPath.c_str(); }
/************************************************************************ 函数功能:获取本机IP地址 输出参数:char* ip -- 本机IP地址 返回值 : ************************************************************************/ bool GetLocalIP(char* ip) { //1.初始化wsa WSADATA wsaData; int ret = WSAStartup(MAKEWORD(2, 2), &wsaData); if (ret != 0) { return false; } //2.获取主机名 char hostname[256]; ret = gethostname(hostname, sizeof(hostname)); if (ret == SOCKET_ERROR) { return false; } //3.获取主机ip HOSTENT* host = gethostbyname(hostname); if (host == NULL) { return false; } //4.转化为char*并拷贝返回 strcpy(ip, inet_ntoa(*(in_addr*)*host->h_addr_list)); return true; }
/************************************************************************ 函数功能:整形转ip字符 输出参数:char* ip -- 本机IP地址 返回值 : ************************************************************************/ void DPC::sin2StrAddrIp(char* ip, int nLen, unsigned long nAddr ) { _snprintf_s(ip, nLen, 20, "%u.%u.%u.%u", *((unsigned char *)(&nAddr) + 0 ), *((unsigned char *)(&nAddr) + 1 ), *((unsigned char *)(&nAddr) + 2 ), *((unsigned char *)(&nAddr) + 3 )); }