VC++获取本机所有IP和掩码信息
来源:互联网 发布:万方数据库下载器 编辑:程序博客网 时间:2024/06/07 02:58
-
-
-
- #include "stdafx.h"
- #include <atlstr.h>
- #include <IPHlpApi.h>
-
- #include <iostream>
-
-
- #pragma comment(lib, "Iphlpapi.lib")
-
- using namespace std;
-
- int _tmain(int argc, _TCHAR* argv[])
- {
-
- CString szMark;
-
-
- PIP_ADAPTER_INFO pAdapterInfo;
- PIP_ADAPTER_INFO pAdapter = NULL;
- DWORD dwRetVal = 0;
-
- pAdapterInfo = ( IP_ADAPTER_INFO * ) malloc( sizeof( IP_ADAPTER_INFO ) );
- ULONG ulOutBufLen;
- ulOutBufLen = sizeof(IP_ADAPTER_INFO);
-
-
-
-
- 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)
- {
- PIP_ADDR_STRING pIPAddr;
- pIPAddr = &pAdapter->IpAddressList;
- while (pIPAddr)
- {
- cout << "IP:" << pIPAddr->IpAddress.String << endl;
- cout << "Mask:" << pIPAddr->IpMask.String << endl;
- cout << endl;
- pIPAddr = pIPAddr->Next;
- }
- pAdapter = pAdapter->Next;
- }
- }
-
-
- getchar();
- return 0;
- }
- #include "stdafx.h"
- #include<stdio.h>
- #include<iostream>
- #include<string.h>
- #include<winsock2.h>
- #include<windows.h>
- #pragma comment(lib, "ws2_32.lib")
- using namespace std;
-
- #define ERR_EXIT(m) \
- do\
- {\
- perror(m);\
- exit(EXIT_FAILURE);\
- }while(0)
-
- int getlocalip(char *ip)
- {
- char host[100] ={"sina.com.cn"};
- if(gethostname(host,sizeof(host))<0)
- return -1;
- struct hostent *hp;
- if((hp =gethostbyname(host))==NULL)
- return -1;
- strcpy(ip,inet_ntoa(*(struct in_addr*)hp->h_addr));
- return 0;
- }
- int main()
- {
- WSADATA wsd;
-
- if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
- {
- cout<<"WSAStartup failed!"<<endl;
- ERR_EXIT("WSAStartup");
- }
-
- char host[100] ={0};
- if(gethostname(host,sizeof(host)) ==SOCKET_ERROR)
- ERR_EXIT("gethostname");
-
- struct hostent *hp;
- if((hp = gethostbyname(host)) ==NULL)
- ERR_EXIT("gethostbyname");
-
- int i =0;
- while(hp->h_addr_list[i]!=NULL)
- {
- printf("%s\n",inet_ntoa(*(struct in_addr*)hp->h_addr_list[i]));
- i++;
- }
-
- char ip[16] ={0};
- getlocalip(ip);
- printf("localip =%s\n",ip);
-
- getchar();
- return 0;
- }