gpt4 book ai didi

c - 获取网络接口(interface)索引

转载 作者:行者123 更新时间:2023-12-03 01:03:31 25 4
gpt4 key购买 nike

我正在为 C 上的 OS X 编写简单的嗅探器所以,我有一个问题,我无法获取网络接口(interface)的索引。我使用这段代码:

int sockfd=socket(PF_INET, SOCK_DGRAM, 0);
if(sockfd<0)
{
printf("create socket");
fprintf(stderr, "%s\n",strerror(errno));
exit(EXIT_FAILURE);
}
sprintf( ifreq.ifr_name, "%s", "en0");
if(ioctl(sockfd, SIOCGIFINDEX, &ifreq)<0)
{
fprintf(stderr, "%s\n",strerror(errno));
exit(EXIT_FAILURE);
}

标识符“SIOCGIFINDEX”未声明的问题。 如果我理解正确的话,结构 sockaddr_ll 需要的网络接口(interface)索引

最佳答案

您也可以尝试查看此代码。这将获取具有名称的接口(interface)并对其执行某些操作。使用完 ifap 后,不要忘记包含 header 并释放内存。

#include <ifaddrs.h>
void do_smth_with_interface(const char *name)
{

struct ifaddrs *ifap = NULL;

if(getifaddrs(&ifap) < 0) {
printf("Cannot get a list of interfaces\n");
return;
}

for(struct ifaddrs *p = ifap; p!=NULL; p=p->ifa_next) {
if (strcmp(p->ifa_name, name) == 0)
// do smth with the interface.
}

freeifaddrs(ifap);
}

关于c - 获取网络接口(interface)索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41529934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com