C++在windows下获取本地主机ipv4地址和ipv6地址的代码

本文介绍了一种使用C++在Windows环境下获取本地主机IPv4和IPv6地址的方法。通过调用Winsock2库,实现对主机名的解析,并遍历主机地址列表,打印出所有可用的IPv4和IPv6地址。

把内容过程中经常用的内容段记录起来,下面内容段是关于C++在windows下获取本地主机ipv4地址和ipv6地址的内容,应该是对码农有所用处。

#include <Winsock2.h> #include <stdio.h> #include #include #include<ws2tcpip.h> using namespace std; int get_ip() { struct addrinfo hint;
PHOSTENT hostinfo; int ilRc; gethostname(hostname, sizeof(hostname)); { errno = GetLastError(); fprintf(stderr,"gethostbyname Error:%dn", errno); return 1; } LPCSTR ip; { printf("ipv4 addr = %snn", ip); hostinfo->h_addr_list++; } hint.ai_canonname = NULL;
hint.ai_addr = NULL;
hint.ai_next = NULL; if (ilRc < 0)
{
char str_error[100];
printf("str_error = %s", str_error);
return 0;
} if(ailist == NULL) { printf("sorry not find the IP address,please try again n"); } { aip->ai_family == AF_INET6; int i; printf("ipv6 addr = "); for(i = 0; i < 16; i++) { if(((i-1)%2) && (i>0)) { printf(":"); } printf("%02x",sinp6->sin6_addr.u.Byte[i]);
} printf(" n"); printf(" n");
} while(1); } int main(){

WORD wVersionRequested;
WSADATA wsaData;
int err;	
wVersionRequested = MAKEWORD( 1, 1 ); 
if ( err != 0 ) 
{
	return 0;
}
	HIBYTE( wsaData.wVersion ) != 1 ) 
{
	WSACleanup( );
	return 0; 
}
get_ip();
return 0;
复制代码

}

转载于:https://juejin.im/post/5cc010a3f265da036023b32e

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值