/*
*功能:传入一个网口名,获取相应的IP地址
* */
#include <stdio.h>
#include <ifaddrs.h>
#include <netinet/in.h>
#include <string.h>
#include <arpa/inet.h>
char *interface2ip(char *infName) {
struct ifaddrs *ifAddrStruct;
void *tmpAddrPtr=NULL;
char ip[16];
memset(ip, 0, sizeof(ip));
static char infIP[16];
getifaddrs(&ifAddrStruct);
while (ifAddrStruct != NULL)
{
if (ifAddrStruct->ifa_addr->sa_family==AF_INET && 0 == strcmp(ifAddrStruct->ifa_name,infName))
{
tmpAddrPtr=&((struct sockaddr_in *)ifAddrStruct->ifa_addr)->sin_addr;
inet_ntop(AF_INET, tmpAddrPtr, ip, INET_ADDRSTRLEN);
//printf("eth0 ip :%s\n",ip);
strcpy(infIP,ip);
//printf("infIP is :%s\n",infIP);
}
ifAddrStr
Linux 中获取指定网口的IP地址(c实现)
最新推荐文章于 2024-08-20 10:49:15 发布
该代码段展示了如何使用C语言通过`getifaddrs`函数获取Linux系统中指定网络接口(如eth0)的IP地址。通过遍历网络接口地址结构,并比较接口名称,将找到的IP地址保存到字符串中并返回。
摘要由CSDN通过智能技术生成