免费试用:最火的人工智能查询工具
     最强AI人工智能聊天工具
     对话机器人解答疑难问题
星外智问直连原始API接口(GPT-4o)
➡️未登录受限条数,请登陆使用完整服务>>>➡️
请输入您要问的问题:


查下百度  查下必应

以下是单个问题的回复:

问:c++获取网络接口IP地址
GPT答: 7i24.cn
//1. 使用getifaddrs系统调用 
#include <arpa/inet.h>
#include <sys/socket.h> 
#include <sys/types.h> 
#include <ifaddrs.h> 
#include <stdio.h> 
#include <stdlib.h> 

// 获取本机的IP地址 
int getMyAddress(char* ip) { 
	struct ifaddrs * ifAddrStruct=NULL; 
	void * tmpAddrPtr=NULL; 

	getifaddrs(&ifAddrStruct); 

	while (ifAddrStruct!=NULL) { 
		if (ifAddrStruct->ifa_addr->sa_family==AF_INET) { 
			// 检查interface消息块中的网络地址结构是否为IPv4 

			tmpAddrPtr=&((struct sockaddr_in *)ifAddrStruct->ifa_addr)->sin_addr; 
			char addressBuffer[INET_ADDRSTRLEN]; 
			inet_ntop(AF_INET, tmpAddrPtr, addressBuffer, INET_ADDRSTRLEN); 
			printf("%s IPV4 Address %s\n", ifAddrStruct->ifa_name, addressBuffer); 

			// strcmp 用于比较两个字符串 
			if (strcmp(ifAddrStruct->ifa_name,"eth0")==0) { 
				// 比较当前接口是否为wlan0 
				strcpy(ip, addressBuffer); 
				return 0; 
			} 
		} else if (ifAddrStruct->ifa_addr->sa_family==AF_INET6) { 
			// 检查接口消息块中的网络地址结构是否为IPv6 

			tmpAddrPtr=&((struct sockaddr_in6 *)ifAddrStruct->ifa_addr)->sin6_addr; 
			char addressBuffer[INET6_ADDRSTRLEN]; 
			inet_ntop(AF_INET6, tmpAddrPtr, addressBuffer, INET6_ADDRSTRLEN); 
			printf("%s IPV6 Address %s\n", ifAddrStruct->ifa_name, addressBuffer); 
			if (strcmp(ifAddrStruct->ifa_name,"eth0")==0) { 
				strcpy(ip, addressBuffer); 
				return 0; 
			} 
		} 
		ifAddrStruct=ifAddrStruct->ifa_next; 
	} 
	return -1; 
}

int main() 
{ 
	char ip[INET_ADDRSTRLEN] = {0};
	if( 0 == getMyAddress(ip)) 
	{ 
		printf("my ip address: %s\n", ip); 
	} 
	return 0; 
}

//2. 使用ioctl系统调用
#include <sys/ioctl.h>
#include <net/if.h> 
#include <arpa/inet.h>
#include <string.h> 
#include <stdio.h> 

// 获取本机的IP地址 
int getMyAddress(char *ip) { 
	struct ifreq        ifr;
	int                 sockfd;
	struct sockaddr_in *sin;
	char                buffer[512];

	// 初始化socket 并判断是否 socket操作成功
	sockfd = socket(AF_INET,SOCK_DGRAM,0);
	if (sockfd == -1) {
		sprintf(buffer,"Socket Error.\n");
		return -1;
	}
	// 设置ifr
	memset(&ifr, 0, sizeof(ifr)); 
	ifr.ifr_ifindex = 0; // 网卡号 必须从0开始 
	ifr.ifr_name[0] = 'e'; 
	ifr.ifr_name[1] = 't'; 
	ifr.ifr_name[2] = 'h'; 
	ifr.ifr_name[3] = '0'; 

	// 获取接口地址
	if ( ioctl( sockfd, SIOCGIFADDR, &ifr) < 0 ) {
		sprintf(buffer,"ioctl(SIOCGIFADDR) Error.\n");
		return -1;
	}
	sin = (struct sockaddr_in *)&ifr.ifr_addr;
	strcpy(ip, inet_ntoa(sin->sin_addr));

	return 0; 
}

int main() 
{ 
	char ip[INET_ADDRSTRLEN] = {0};
	if( 0 == getMyAddress(ip)) 
	{ 
		printf("my ip address: %s\n", ip); 
	} 
	return 0; 
}
一星  二星  三星  四星  五星 

互联网非法外之地,请不要输入不良内容
 查下百度 查下必应 02-21 19:55:12



chatGPT中国版--星外智问--8v6.CN
当前运行网址:haoadm.com
客服微信:xwgdd_com APP下载 怎么问 识别真假GPT4 使用GPT赚钱 退出登陆