我希望列出特定PC上所有可用接口的列表以及有线或无线类型。目前我正在做以下但没有成功: -
ioctl(sd, SIOCGIFNAME, &ifr);
strncpy(ifname,ifr.ifr_name,IFNAMSIZ);
printf("Interface name :%s\n",ifname);
如果只有名字可用,也会很好。
答案 0 :(得分:20)
如果您使用的是ubuntu,正如您的代码所示,您可以随时阅读/proc/net/dev
,其中包含您要查找的信息。
答案 1 :(得分:12)
ifconfig -a
所有你可以看到接口avalaible列表,你不需要C代码脚本,
如果您想获得更多关于界面的信息
lspci
您可以找到您的接口类型和型号
答案 2 :(得分:3)
C界面名为 ifaddrs ,您可以将其包含在:
-(void) setTheGifHeigt:(int)screenHeight andWidth:(int)screenWidth andSize:(int)size{
image = [[FLAnimatedImage alloc] initWithAnimatedGIFData:[NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"mygif" ofType:@"gif"]]];
imageView = [[FLAnimatedImageView alloc] init];
imageView.loopCompletionBlock(0);
imageView.animatedImage = image;
imageView.frame = CGRectMake((screenWidth / 2) - (size / 2), (screenHeight / 2) - (size / 2), size, size);
[self.view addSubview:imageView];
}
您感兴趣的功能是getifaddrs
,一旦完成了数据freeifaddrs
。
#include <sys/types.h>
#include <ifaddrs.h>
此结构包含struct ifaddrs {
struct ifaddrs *ifa_next; /* Next item in list */
char *ifa_name; /* Name of interface */
unsigned int ifa_flags; /* Flags from SIOCGIFFLAGS */
struct sockaddr *ifa_addr; /* Address of interface */
struct sockaddr *ifa_netmask; /* Netmask of interface */
union {
struct sockaddr *ifu_broadaddr;
/* Broadcast address of interface */
struct sockaddr *ifu_dstaddr;
/* Point-to-point destination address */
} ifa_ifu;
#define ifa_broadaddr ifa_ifu.ifu_broadaddr
#define ifa_dstaddr ifa_ifu.ifu_dstaddr
void *ifa_data; /* Address-specific data */
};
命令行工具返回的所有信息。
对于C ++用户,我建议您使用这样的删除器:
ifconfig
并将void ifaddrs_deleter(struct ifaddrs * ia)
{
freeifaddrs(ia);
}
的结果附加到:
getifaddrs()
答案 3 :(得分:0)
我只在Ubuntu上使用此命令。我不确定这项工作是否可以用于其他发行版。
ls /sys/class/net