如何使用c显示多个子网掩码地址 [英] how to disply the multiple subnet mask address using c

查看:66
本文介绍了如何使用c显示多个子网掩码地址的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我完成了该程序,仅从系统和显示中获得一个子网掩码地址..

我指的是msdn网站.我的编码是:


i done that program to get a only one subnet mask address from system and display..

i refer from the msdn website. my coding is:


#include <stdafx.h>
#include <windows.h>
#include <iphlpapi.h>
#include <stdio.h>
#include <stdlib.h>
#pragma comment(lib, &quot;Iphlpapi.lib&quot;)
int main(void)
{
    ULONG            cbBuf    = 0;
    PIP_ADAPTER_INFO pAdapter = NULL;
    PIP_ADAPTER_INFO pMemory  = NULL;
    DWORD            dwResult = 0;
    PIP_ADAPTER_INFO pMemory1 = NULL;
    dwResult = GetAdaptersInfo(NULL, &amp;cbBuf);
    pMemory = pAdapter = (PIP_ADAPTER_INFO) malloc(cbBuf);
    dwResult = GetAdaptersInfo(pAdapter, &amp;cbBuf);
    while (pAdapter)
    {
        printf("Name: %s\nDescription: %s\nGateway: %s\nSubnet Mask: %s\n",
               pAdapter-&gt;AdapterName,
               pAdapter-&gt;Description,
               pAdapter-&gt;GatewayList.IpAddress.String,
               pAdapter-&gt;IpAddressList.IpMask.String);
        pAdapter = pAdapter-&gt;Next;
    }
    free(pMemory);
    getchar();
    return 0;
}




就像我创造的那样.

我成功地跑了.

但我的系统也创建了4个IP地址和等效的子网掩码地址...

我不知道如何使用c从系统中检索所有子网掩码地址.

[edit]已添加代码块-OriginalGriff [/edit]




like that i created.

i run sucessfully..

but my system i create 4 ip address and equivalent subnet mask address also...

i don''t know how to retrieve all subnet mask address form the system using c.


[edit]Code block added - OriginalGriff[/edit]

推荐答案

PIP_ADAPTER_INFO pAdapterInfo;
PIP_ADAPTER_INFO pAdapter = NULL;
printf("Hello World!\ n");
DWORD dwRetVal = 0;
ULONG ulOutBufLen = sizeof(PIP_ADAPTER_INFO);
pAdapterInfo =(IP_ADAPTER_INFO *)malloc(sizeof(IP_ADAPTER_INFO));
if(GetAdaptersInfo(pAdapterInfo,& ulOutBufLen)== ERROR_BUFFER_OVERFLOW)
{
free(pAdapterInfo);
pAdapterInfo =(IP_ADAPTER_INFO *)malloc(ulOutBufLen);

}
dwRetVal = GetAdaptersInfo(pAdapterInfo,& ulOutBufLen);
pAdapter = pAdapterInfo;
while(pAdapter)
{
temp =新的node();
temp-> gate = pAdapter-> GatewayList.IpAddress.String;
temp-> ip = pAdapter-> IpAddressList.IpAddress.String;
temp-> mac = pAdapter-> IpAddressList.IpMask.String;
temp-> next = main1;
main1 = temp;
IP_ADDR_STRING * p;
p =(pAdapter-> IpAddressList.Next);
while(p)
{
temp = main1;
while(temp-> next!= NULL)
{
temp = temp-> next;
}
temp =新的node();
temp-> ip = p-> IpAddress.String;
temp-> mac = p-> IpMask.String;
temp-> next = main1;
main1 = temp;
p = p-> Next;
}

pAdapter = pAdapter->下一步;
}
这将提供您可以使用的所有IP和子网掩码地址..

100%正常工作.
PIP_ADAPTER_INFO pAdapterInfo;
PIP_ADAPTER_INFO pAdapter=NULL;
printf("Hello World!\n");
DWORD dwRetVal=0;
ULONG ulOutBufLen=sizeof(PIP_ADAPTER_INFO);
pAdapterInfo = (IP_ADAPTER_INFO *) malloc(sizeof (IP_ADAPTER_INFO));
if(GetAdaptersInfo(pAdapterInfo, &ulOutBufLen)==ERROR_BUFFER_OVERFLOW)
{
free(pAdapterInfo);
pAdapterInfo = (IP_ADAPTER_INFO *) malloc(ulOutBufLen);

}
dwRetVal = GetAdaptersInfo(pAdapterInfo, &ulOutBufLen);
pAdapter = pAdapterInfo;
while (pAdapter)
{
temp=new node();
temp->gate=pAdapter->GatewayList.IpAddress.String;
temp->ip=pAdapter->IpAddressList.IpAddress.String;
temp->mac=pAdapter->IpAddressList.IpMask.String;
temp->next=main1;
main1=temp;
IP_ADDR_STRING *p;
p=(pAdapter->IpAddressList.Next);
while(p)
{
temp=main1;
while(temp->next!=NULL)
{
temp=temp->next;
}
temp=new node();
temp->ip=p->IpAddress.String;
temp->mac=p->IpMask.String;
temp->next=main1;
main1=temp;
p=p->Next;
}

pAdapter=pAdapter->Next;
}
this will provide all ip and subnet mask address you can use it..

100% its working..


这篇关于如何使用c显示多个子网掩码地址的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆