获取linux链路层数据
int main()
{
int sockfd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP));
if (sockfd < 0)
{
perror("err:");
printf("sockfd err\n");
}
printf("sockfd:%d\n", sockfd);
close(sockfd);
return;
}
为什么socket创建失败,失败提示:err:: Operation not permitted
------解决方案--------------------没root权限?
------解决方案--------------------SOCK_RAW 要root
------解决方案--------------------使用SOCK_RAW绕开了传输层,直接到网络层获取数据,需要ROOT权限才能访问。