#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欢迎分享,转载请注明来源:内存溢出
评论列表(0条)