如何使用c显示多个子网掩码地址 [英] how to disply the multiple subnet mask address using c
本文介绍了如何使用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, "Iphlpapi.lib")
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, &cbBuf);
pMemory = pAdapter = (PIP_ADAPTER_INFO) malloc(cbBuf);
dwResult = GetAdaptersInfo(pAdapter, &cbBuf);
while (pAdapter)
{
printf("Name: %s\nDescription: %s\nGateway: %s\nSubnet Mask: %s\n",
pAdapter->AdapterName,
pAdapter->Description,
pAdapter->GatewayList.IpAddress.String,
pAdapter->IpAddressList.IpMask.String);
pAdapter = pAdapter->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屋!
查看全文