怎么用C语言获取Linux系统的网卡IP地址

怎么用C语言获取Linux系统的网卡IP地址,第1张

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <string.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <net/if.h>

#include <netdb.h>

#include <arpa/inet.h>

#include <sys/ioctl.h>

//获取地址

//返回IP地址字符串

int getlocalip(char* outip)

{

int i=0

int sockfd

struct ifconf ifconf

char buf = (char)malloc(512)

struct ifreq *ifreq

char* ip

//初始化ifconf

ifconf.ifc_len = 512

ifconf.ifc_buf = buf

if((sockfd = socket(AF_INET, SOCK_DGRAM, 0))<0)

{

return -1

}

ioctl(sockfd, SIOCGIFCONF, &ifconf) //获取所有接口信息

close(sockfd)

//接下来一个一个的获取IP地址

ifreq = (struct ifreq*)buf

i = ifconf.ifc_len/sizeof(struct ifreq)

char *pos = outip

int count

for(count = 0 (count < 5 && i > 0) i--)

{

ip = inet_ntoa(((struct sockaddr_in*)&(ifreq->ifr_addr))->sin_addr)

if(strncmp(ip,"127.0.0.1", 3)==0) //排除127.x.x.x,继续下一个

{

ifreq++

continue

}else

{

printf("%s\n", ip)

strcpy(pos,ip)

int len = strlen(ip)

pos = '\t'

pos += len+1

count ++

ifreq++

}

}

free(buf)

return 0

}

//——————————-函数的调用方式————————————-

int main(int argc, char** argv)

{

char ip = {'*'}

if ( getlocalip( ip ) == 0 )

{

printf("本机IP地址是: %s\n", ip )

}

else

{

printf("无法获取本机IP地址 ")

}

return 0

}

你的tt取出来是不是类似"B5"这样的16进制数字符串?想要转成单字节uint8_t类型的话,进行如下转换即可:

if((tt[0]>='0')&&(tt[0]<='9'))

{

mm.bssid_ap[0]=((tt[0]-'0')<<4)

}

else

if((tt[0]>='a')&&(tt[0]<='z'))

{

mm.bssid_ap[0]=((tt[0]-'a')<<4)

}

else

if((tt[0]>='A')&&(tt[0]<='Z'))

{

mm.bssid_ap[0]=((tt[0]-'A')<<4)

}

if((tt[1]>='0')&&(tt[1]<='9'))

{

mm.bssid_ap[0]

+=(tt[1]-'0')

}

else

if((tt[1]>='a')&&(tt[1]<='z'))

{

mm.bssid_ap[0]

+=(tt[1]-'a')

}

else

if((tt[1]>='A')&&(tt[1]<='Z'))

{

mm.bssid_ap[0]

+=(tt[1]-'A')

}

两个网卡当然可以设置两个网关。 两种方法(redhat为例): 1、修改配置文件: 假设两个网卡名分别为eth0,eth1。可以分别修改配置文件/etc/sysconfig/network-scripts/ifcfg-eth0 及/etc/sysconfig/network-scripts/ifcfg-eth1


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8436052.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-16
下一篇 2023-04-16

发表评论

登录后才能评论

评论列表(0条)

保存