• 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);
    }

    }





  • 相关阅读:
    HDU 5392 Infoplane in Tina Town
    HDU 2206 IP的计算(字符串处理)
    线程的条件变量实例
    CentOS安装配置Samba
    PO订单审批拒绝API
    【Java集合源代码剖析】Hashtable源代码剖析
    magento megatron主题加入中文
    递归系列2(字符串翻转,12345翻转)
    机器学习之&&Andrew Ng课程复习--- 聚类——Clustering
    JSP基础
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/6920515.html
Copyright © 2020-2023  润新知