常用函数-Win-IP

 

 

//*************************************************************************
// 函数名:    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 ));
}

 

posted @ 2018-12-03 22:36  osbreak  阅读(219)  评论(0编辑  收藏  举报