zoukankan      html  css  js  c++  java
  • windows下用C++获取本机IP地址

    BSTR CamUtilsCtrl::GET_TERM_IP(void)
    {
    AFX_MANAGE_STATE(AfxGetStaticModuleState());

    CString strResult;

    // TODO: 在此添加调度处理程序代码
    WSADATA wsaData;
    WORD sockVersion = MAKEWORD(2,2);
    //初始化socket环境
    if(::WSAStartup(sockVersion,&wsaData)!=0)
    {
    tracelog3(LOG_INFO,"WSAStartup failed.ErrorCode=%d",GetLastError());
    exit(0);
    }

    //获得主机名称
    char szHost[256]={0};
    ::gethostname(szHost,256);
    tracelog3(LOG_INFO,"主机名=%s",szHost);
    //获得主机名称下的网络信息
    hostent *pHost = ::gethostbyname(szHost); //返回指定主机名的包含主机名字和地址信息的hostent结构的指针
    /*struct hostent
    {
    char *h_name; //正式主机名
    char ** h_aliases; //主机别名
    short h_addrtype; //主机IP地址类型:IPV4-AF_INET
    short h_length; //主机I票地址字节长度,IPV4是4字节,即32位
    char ** h_addr_list; //主机的IP地址列表
    };*/

    //处理获得的网络信息
    in_addr addr;
    CString strTmp,strBuf;
    for(int i=0;;i++)
    {
    char *p = pHost->h_addr_list[i];
    if(p==NULL)
    break;
    memcpy(&addr.S_un.S_addr,p,pHost->h_length);
    char *slzp = ::inet_ntoa(addr); //将sin_addr储存的IP(数值)转换成字符串形式(127.0.0.1)
    strBuf = slzp;
    strTmp.Append((strBuf+"|"));
    }
    //关闭socket环境
    ::WSACleanup();
    strTmp.TrimRight("|");
    //EVTFSNMESSAGE(strTmp);
    strResult = strTmp;

    return strResult.AllocSysString();
    }

  • 相关阅读:
    win10 uwp 获得缩略图
    win10 uwp 获取指定的文件 AQS
    win10 uwp 使用 Geometry resources 在 xaml
    WPF 如何画出1像素的线
    Windows 10 快捷键汇总表格
    要让CLR挂掉的话……
    UWP 分享用那个图标
    UWP 分享用那个图标
    PHP jdtogregorian() 函数
    PHP jdtojewish() 函数
  • 原文地址:https://www.cnblogs.com/jieliujas/p/9045438.html
Copyright © 2011-2022 走看看