zoukankan      html  css  js  c++  java
  • MFC自己主动获取网络地址函数实现----广播地址,网关,子网掩码

    void CSetSignalBoxDlg::OnBnClickedButtonGetbroadcastaddr()
    {       //凝视部分为还有一种获取IP方式,可略过
    //char Name[255];//定义用于存放获得的主机名的变量 
    //char *IP;//定义IP地址变量 
    //CString strIP="";
    //PHOSTENT hostinfo;
    //if(gethostname (Name, sizeof(Name)) == 0)
    //{ 
    // //假设成功地将本地主机名存放入由name參数指定的缓冲区中 
    // if((hostinfo = gethostbyname(Name)) != NULL) 
    //
    // //这是获取主机名。假设获得主机名成功的话,将返回一个指针,指向hostinfo,hostinfo 
    // //为PHOSTENT型的变量,以下即将用到这个结构体 
    // IP = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list);
    // strIP.Format(IP);
    // }
    //}


           CString strIP;
    CString strMask;
    CString strBroadcast;
    CString strGateway;
    in_addr broadcast;

    PIP_ADAPTER_INFO pAdapterInfo;     //IP_ADAPTER_INFO结构体存储网卡信息,包含网卡名、网卡描写叙述、网卡MAC地址、网卡IP等
    PIP_ADAPTER_INFO pAdapter = NULL; 
    DWORD dwRetVal = 0; 
    pAdapterInfo = ( IP_ADAPTER_INFO *) malloc( sizeof( IP_ADAPTER_INFO ) );
    ULONG ulOutBufLen;               
    //得到结构体大小,用于GetAdaptersInfo參数
    ulOutBufLen = sizeof(IP_ADAPTER_INFO); 
    // 第一次调用GetAdapterInfo获取ulOutBufLen大小 
    //调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量;当中ulOutBufLen參数既是一个输入量也是一个输出量
    if (GetAdaptersInfo( pAdapterInfo, &ulOutBufLen) == ERROR_BUFFER_OVERFLOW) 

    free(pAdapterInfo);
    pAdapterInfo = (IP_ADAPTER_INFO *) malloc (ulOutBufLen); 

    if ((dwRetVal = GetAdaptersInfo( pAdapterInfo, &ulOutBufLen)) == NO_ERROR)

    pAdapter = pAdapterInfo; 
    while (pAdapter)    //有多个网卡

    strIP.Format(_T("%s"), pAdapter->IpAddressList.IpAddress.String);
    strMask.Format(_T("%s"),pAdapter->IpAddressList.IpMask.String);
    strGateway.Format(_T("%s"),pAdapter->GatewayList.IpAddress.String);
    pAdapter = pAdapter->Next; 



    broadcast.S_un.S_addr =(inet_addr(strIP) & inet_addr(strMask))| (~inet_addr(strMask));
    strBroadcast = inet_ntoa(broadcast);

    SetDlgItemText(IDC_EDIT_ServerIP,strBroadcast);
    SetDlgItemText(IDC_EDIT_SubnetMask,strMask);
    SetDlgItemText(IDC_EDIT_Gateway,strGateway);
    if (pAdapterInfo)
    {
    free(pAdapterInfo);
    }

    }





  • 相关阅读:
    替代Reflector的反编译软件ILSpy 1.0正式发布了
    持续集成理论和实践的新进展
    基于hudson搭建持续集成服务器
    URL友好化
    选择持续集成工具需要考虑的几个因素
    http://www.cnblogs.com/msdnchina/archive/2011/07/28/MSDNPortals.html
    Android开发之旅
    Windows 7下安装Android,出现问题的解决方案
    推荐一个很棒的免费自助建站工具:Tap
    第一讲:Android开发环境的搭建
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/6920515.html
Copyright © 2011-2022 走看看